Axo*_*onn 2 .net c# network-programming
).今天我用TcpListener遇到了一些问题.事情很奇怪.最初,我使用了新的TcpListener(port)构造函数,但是它已被标记为已过时.所以我放弃了它并使用了它:
IPAddress ipAddress = Dns.GetHostEntry(Dns.GetHostName()).AddressList[0];
IPEndPoint ipLocalEndPoint = new IPEndPoint(ipAddress, ServerPort);
TcpListener tcpServer = new TcpListener(ipLocalEndPoint);
_TCPClient = tcpServer.AcceptTcpClient();
GotClient();
Run Code Online (Sandbox Code Playgroud)
当然,我在一个线程中这样做,因此它不会锁定应用程序.现在,那里发生的是,即使ipAddress正确,服务器也不会接受任何传入连接.
但是,更改为新的IPEndPoint(IPAddress.Any,ServerPort)似乎可以解决问题!这有两个方面很愚蠢:
2小时前,IPAddress.Any返回192.168.1.102这是我正确的本地IP.这与 ipAddress中的IP 相同!但是使用ipAddress它不起作用,而使用IPAddress.Any它工作(即,它成功接受来自我的客户端的连接).
现在:IPAddress.Any返回0.0.0.0( !?而ip地址变量继续被赋予我的正确IP(192.168.1.102)).结果?如果使用ipAddres,我的客户端仍然无法连接,但在使用IPAddress.Any时连接,即使它是0.0.0.0.
我对这完全感到困惑......有什么想法吗?
我目前在Form_HandleCreated中有这个,但是当我在Form的构造函数中使用它时它表现得很奇怪.
后期编辑:我认为我错了IPAddress.Any返回192.168.1.102.我可能打印出别的东西,因为很多人都指出0.0.0.0是什么.Any应该返回.对不起:: - D.
IPAddress.Any应该返回0.0.0.0,这是正常的.你真的确定它最初会返回其他东西吗?
至于为什么你以前无法连接,如果您正在收听的192.168.1.102,并试图连接到127.0.0.1(本地主机),那么它是行不通的.如果要连接到该IP地址,则需要侦听127.0.0.1.
实质上,您必须侦听您尝试连接的IP地址.收听0.0.0.0表示"侦听所有可用的IP地址".请记住,127.0.0.1(localhost)不是"my local network IP"的同义词.
| 归档时间: |
|
| 查看次数: |
8006 次 |
| 最近记录: |