Является ли один порт для чтения и один порт для записи хорошей идеей для сокет-приложений?

Мне интересно, если это хорошая идея иметь 2 отдельных порта один для чтения, один для записи? Могу ли я ожидать лучшей производительности?

ПРИМЕЧАНИЕ. Сервер — Centos, клиент — flash, формат сообщений для связи — JSON.


person WorM    schedule 05.01.2012    source источник


Ответы (3)


Лучше всего иметь его в TCP с одним портом, также в зависимости от того, используете ли вы NIO или нет,

На всякий случай, если вы хотите иметь 2 порта и если это не TCP (например, UDP)

Если вы используете 32-разрядную ОС Cent, убедитесь, что ваше ядро ​​​​использует больше портов, чем должно.

Это сделано для предотвращения голодания портов и быстрого выхода из строя вашего сервера.

Посчитайте, если вам нужно поддерживать 100 пользователей, 100 x 2 = 200 открытых портов.

но в большинстве случаев доступны только (65534 - 1024) порты, так что, если вы можете себе это позволить, то это круто.

Также помните, что большинство интернет-провайдеров блокируют определенные порты, поэтому держите нужные порты открытыми для чтения/записи.

С Уважением

person Araejay    schedule 05.01.2012
comment
что вы имеете в виду под тем, что большинство провайдеров блокируют определенные порты? - person WorM; 05.01.2012
comment
Некоторые интернет-провайдеры блокируют определенные порты, например, порты для обмена файлами или типичные игровые порты. - person Araejay; 05.01.2012
comment
Я помню, в Эссене, Германия, они заблокировали все, кроме FTP, HTTP и HTTPS. - person Araejay; 05.01.2012
comment
Все ваши порты принадлежат нам? - person Alnitak; 06.01.2012

Значительного преимущества в производительности нет, и может потребоваться гораздо больше кода для обработки двух сокетов, чем одного, особенно на стороне сервера.

Вам также все равно придется открывать оба сокета со стороны клиента, поскольку большинство систем не разрешают серверу открывать обратное соединение с клиентом.

person Alnitak    schedule 05.01.2012

Насколько я знаю, TCP оптимизирован, предполагая, что вы отправите запрос и получите ответ в одном и том же сокете, однако разница, скорее всего, будет незначительной.

Часто самое простое решение оказывается и самым быстрым.

Какую проблему вы пытаетесь решить?

person Peter Lawrey    schedule 05.01.2012
comment
см. stackoverflow.com/q/8735731/378737, это моя основная проблема. Я пытаюсь выяснить, правильно ли я настроил netty. - person WorM; 05.01.2012
comment
Конечно, поведение, которое вы получаете, является странным. Если вы можете, я бы протестировал простую эхо-службу, которая отправляет небольшие пакеты туда и обратно, если вы можете получить что-то, кто видел проблемы, чтобы помочь. Типичное время пинга по всему миру должно быть менее 300 мс. Проблема, с которой вы столкнулись, заключается в проверке того, что у вас есть. Как только вы сможете это сделать, решение станет более очевидным. - person Peter Lawrey; 05.01.2012
comment
Петр, спасибо за ответ в первую очередь. Я поместил свою конфигурацию в следующий вопрос, у вас есть какие-либо предложения? stackoverflow.com/q/8655973/378737 - person WorM; 05.01.2012
comment
Основное предложение заключается в том, что вы должны иметь возможность тестировать все, что вы делаете, потому что я часто сталкиваюсь с вещами, которые должны улучшить производительность, но не делают этого, и другими вещами, которые не должны иметь большого значения, но делают. - person Peter Lawrey; 05.01.2012