Я новичок в сокетах и ​​у меня есть пара вопросов об их использовании в .NET. Это потребительская программа, поэтому проблем с масштабированием не возникнет, когда пользователь запускает сервер и клиент.

1) Лучше ли держать соединение сокета открытым до тех пор, пока сервер не будет закрыт, или я должен открывать соединение только тогда, когда пользователь запрашивает его, и закрывать его по завершении? Это не игра в реальном времени, поэтому запросы будут прерывистыми, но есть ли недостатки в том, чтобы оставить соединение сокета открытым?

2) Требуют ли сокеты, чтобы у пользователя были права администратора, если они запускают сервер? Я огляделся, и мне показалось, что сокеты RAW подходят, но вместо этого я планирую использовать Stream или Dgram, в зависимости от того, что лучше всего подходит для моей программы.

0
XSL 24 Янв 2013 в 07:05

1 ответ

Лучший ответ
  1. Если вы говорите об одном сокете, тогда нет ничего страшного, чтобы оставить его открытым. Доступно множество портов, и если ваш сокет просто находится в состоянии ожидания, он будет потреблять незначительное количество системных ресурсов.
  2. Соединения сокетов TCP и UDP не требуют прав администратора для открытия. Однако, в зависимости от настроек брандмауэра пользователя, брандмауэр может потребоваться исключение, чтобы ваше приложение могло внешнее соединение и в зависимости от программного обеспечения брандмауэра, которое может или может не требовать прав администратора.
1
Spencer Ruport 24 Янв 2013 в 07:11
Спасибо за ваш ответ. Это будет минимальное количество подключений (максимум 3-5, но обычно всего 1), и все они будут подключаться к одному и тому же порту. Хотя пользователь может выбрать номер своего порта в качестве значения по умолчанию, может ли моя программа использовать любой доступный порт, указанный как неофициальный? en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
 – 
XSL
24 Янв 2013 в 07:17
1
Технически вы можете использовать любой порт, который вам нравится, это просто считается грубым. Особенно, если это порт, который регулярно связан с типом службы. Но да, любой неофициальный порт должен подойти.
 – 
Spencer Ruport
24 Янв 2013 в 10:37