我基本上正在执行以下代码:
int port = 5555; //just an example
IPEndPoint ep = new IPEndPoint(IPAddress.Any,port);
var l = new TcpListener(ep);
l.Start();
l.BeginAccept(AcceptHandler,l);
它可以工作(当然),但是在一台特定的机器上,服务器套接字是在另一个端口上打开的!总是!
此外,我可以在相同的端口上多次运行上述命令:每次我都获得一个不同的端口。
这些机器是Windows 2016 Citrix机器;防火墙由Symantec处理。我没有足够的权限来获取更多详细信息。
我认为上述行为来自某些安全软件-有点整洁,但对我而言却很烦人。请注意,我可以找到我实际获得的端口,但是要查询:
int actualPort = ((IPEndPoint)listener.Server.LocalEndPoint).Port;
我联系了管理机器的IT团队,他们说这很正常,因为它是一个“多用户”系统,我应该在Wikipedia上阅读有关临时端口的信息……基本上我应该使用临时端口?
这听起来对我来说是很多学士学位。无论如何,无论我要什么,我都会有所不同。。。
我已经做了一段时间的winsock编程。这对我来说是新的体验。
据我所知,我一直以为为特定端口打开服务器套接字时,会得到您要的(或失败)。
有人经历过以上吗?是否指向某些Windows安全设置或其他执行此操作的软件的指针?
谢谢!