2009-10-04 3 views
2

Позвольте мне объяснить свой сценарий, прежде чем задавать вопрос.

Я нахожусь в фазе создания 17 различных многопользовательских игр, которые можно играть онлайн, непосредственно из браузера.
Для этого я выбрал Silverlight.
Связь будет осуществляться с использованием разъемов.

Изображение 17 таких игр, как «Шахматы», «Нарды», «Пул», «Пул» и сотни онлайн-пользователей, взаимодействующих между клиентским приложением и серверным приложением, с использованием сокетов, привязанных к одному и тому же номеру PORT.

Не будет быстрее (для моего сервера), если каждый другой тип игры будет использовать другой номер PORT? Шахматы будут использовать 4502, Нарды будут использовать 4503, Pool 4504.
Будет ли это иметь значение? Или я должен использовать тот же номер PORT 4502 для всех игр, не опасаясь, что может произойти что-то плохое?Несколько сокетов на одном и том же порту с несколькими гнездами на нескольких портах

ответ

2

Что касается скорости обработки на вашем сервере, это, скорее всего, будет иметь очень мало значения, получаете ли вы все свои сообщения на одном сокете или 17. Подход с одним сокетом будет немного быстрее, поскольку ваше серверное приложение, вероятно, будет есть меньше потоков для переключения между ними. Однако будут и другие вещи, которые будут иметь более высокие накладные расходы, такие как фактическая обработка движений игры или авторизация клиентских запросов и т. Д.

Что касается вопроса о том, следует ли использовать один или несколько сокетов, то самое большое, о чем вы должны думать, это развертывание ограничения. Номера портов TCP, которым Silverlight разрешено использовать нестандартные (т. Е. Не 80 или 443), и если между вашим клиентом и сервером есть брандмауэр или прокси, вы можете лучше придерживаться одного порта, чтобы сделать список управления доступом брандмауэр проще.

3

Сокет, который был установлен как сервер, может принимать запросы на соединение от нескольких клиентов. Исходный серверный сокет не станет частью соединения. Метод accept делает новый сокет, который участвует в соединении и возвращает этот сокет. Оригинальный сокет сервера остается доступным для прослушивания дальнейших запросов на соединение.

Поэтому у него нет преимуществ использовать разные порты сервера. После того, как все веб-серверы получат все свои запросы на порт 80 и справятся с этим очень хорошо.

+0

Новый разъем на другом порту? – zooropa

Смежные вопросы