在客户现场,以下代码运行得非常神奇:
private IPEndPoint GetCurrentServerIpAddress()
{
...
return new IPEndPoint(IPAddress.Parse("192.168.13.9"), 12714);
}
var IPAddress = GetCurrentServerIpAddress();
_socket.Bind(IPAddress);
由于我需要解决该客户网站上的错误,因此我尝试在自己的电脑上启动该程序。为此,我想使用另一台 IP 地址为“10.0.1.60”的测试计算机(都是虚拟机),我想做同样的事情(但显然使用新的 IP 地址:
private IPEndPoint GetCurrentServerIpAddress()
{
...
return new IPEndPoint(IPAddress.Parse("10.1.0.60"), 12714);
}
var IPAddress = GetCurrentServerIpAddress();
_socket.Bind(IPAddress);
然而,这不起作用:我总是陷入
System.Net.Sockets.SocketException
,提到“请求的地址在其上下文中无效”。
我清楚地看到“192.168.xxx.yyy”和“10.0.1.zzz”是不同(种类)的地址,这可能会导致此问题。
我该怎么做才能避免该错误消息并能够从我的测试机器发送 TCP 消息?
编辑:我电脑的“ipconfig”
最后一条评论提到了我的计算机(Windows-10 计算机)上的接口状况。由于我不知道如何解释此评论,因此
ipconfig
命令结果:
Prompt>ipconfig
Windows IP Configuration
Ethernet adapter Ethernet 4:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Ethernet adapter Ethernet 2:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Ethernet adapter Ethernet:
Connection-specific DNS Suffix . : company.int
Link-local IPv6 Address . . . . . : fe80::4c66:9ac5:dbd0:656%25
IPv4 Address. . . . . . . . . . . : 10.1.3.19
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 10.1.3.254
Wireless LAN adapter Wi-Fi:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Wireless LAN adapter Local Area Connection* 1:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Wireless LAN adapter Local Area Connection* 2:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Ethernet adapter VMware Network Adapter VMnet1:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe60::b53a:f868:31d0:e5a9%5
IPv4 Address. . . . . . . . . . . : 192.168.133.11
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
Ethernet adapter VMware Network Adapter VMnet8:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe60::332e:9c68:4e2d:ceb7%27
IPv4 Address. . . . . . . . . . . : 192.168.42.11
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
Ethernet adapter Ethernet 3:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Ethernet adapter Talk2m-eCatcher:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Ethernet adapter Ethernet 9:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Ethernet adapter Ethernet 10:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
由于您的测试计算机上没有与 IP 地址“10.1.0.60”关联的网络接口,因此您尝试将此 IP 地址与代码“绑定”将会失败。
简单来说,这意味着提供的 IP 地址未分配给您计算机上的任何网络接口。
请尝试使用IPAddress.Any来监听任何IP地址。
方法使用 Any 字段来指示 Socket 实例必须侦听所有网络接口上的客户端活动。Socket.Bind