Я в основном выполняю следующий код:
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 или другое программное обеспечение, которое делает это?
Спасибо!