Установите диапазон бесплатных локальных портов для приложения - PullRequest
0 голосов
/ 19 сентября 2011

У меня есть клиентское приложение, которое создает сокет со случайным локальным портом, я не могу изменить код этого приложения, и я хочу установить диапазон портов, которые он может использовать из моего приложения C #. Является ли это возможным? Спасибо!

1 Ответ

0 голосов
/ 19 сентября 2011

Таким образом, клиент попытается подключиться к вашему приложению, используя любой из диапазона номеров портов. Вы не можете знать, какой сокет они будут использовать, но вы МОЖЕТЕ знать, что они будут использовать один из этого диапазона.

Если это так, вы можете сделать одну из двух вещей:

  1. Если компьютер, на котором работает ваше приложение, когда-либо взаимодействует только с этим одним клиентом, просто настройте один TcpListener (или другой прослушиватель сокетов) для прослушивания вашего адреса на всех портах. Это рискованно; если какой-либо другой компьютер попытается запросить веб-страницу или установить сетевое время на этом компьютере, ваше приложение может неправильно перехватить эти подключения.
  2. Если вам действительно нужен диапазон доступных портов, к которым клиент может подключиться, то я бы использовал цикл for для настройки коллекции TcpListeners, по одному для каждого порта, к которому вы хотите подключиться.

Поймите, это для TCP. UDP (еще один распространенный протокол) не имеет состояния, то есть соединения между клиентом и сервером никогда не создаются; клиент просто что-то кричит этому серверу и порту и молится, чтобы сервер слушал, получил и понял сообщение.

...