Порт TcpListener: сокет создается на другом порту - PullRequest
0 голосов
/ 25 октября 2018

Я в основном выполняю следующий код:

int port = 5555; //just an example
IPEndPoint ep = new IPEndPoint(IPAddress.Any,port);
var l = new TcpListener(ep);
l.Start();
l.BeginAccept(AcceptHandler,l);

Это работает (конечно), но на одном конкретном компьютере сокет сервера открывается на другом порту!Всегда!

Более того, я могу запускать вышеописанное с одним и тем же портом несколько раз: я просто получаю другой порт каждый раз.

Машины - это машина Citrix для Windows 2016;брандмауэр управляется Symantec.У меня нет достаточного доступа для получения более подробной информации.

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

int actualPort = ((IPEndPoint)listener.Server.LocalEndPoint).Port;

Я связался с ИТ-командой, которая управляет машиной, они говорят, что это нормально, потому что это «многопользовательская» система,и я должен прочитать в википедии об эфемерных портах ... По сути, я должен использовать эфемерный порт?

Для меня это звучит как много BS.В любом случае, что бы я ни просил, я получаю что-то другое ...

Я уже некоторое время занимаюсь программированием winsock.Для меня это новый опыт.

Знайте, я всегда предполагал, что при открытии сокета сервера для определенного порта вы получите то, о чем просили (или потерпели неудачу).

Кто-нибудь когда-либо испытывал вышеупомянутое?Любые указатели на некоторые настройки безопасности Windows или другое программное обеспечение, которое делает это?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...