我目前正在我的机器上开发一个网络应用程序,它有两个网络接口,具有以下设置-

我想通过使用IP 192.168.1.2的第一个配置来发送UDP消息。
using (var udpClient = new UdpClient(5556))
{
udpClient.Connect(IPAddress.Parse("192.168.1.2"), 5556);
// DO STUFF
}当我尝试这个时,我会得到以下错误-
由于目标机器主动拒绝连接,因此无法建立连接。
奇怪的是,当我禁用我的另一个网络,这是完美的,但与2连接(局域网和WiFi),它不再工作了.我想是它发错适配器了吧?这是因为我的默认网关是相同的还是我做错了什么?我刚开始开发基于网络的应用.
发布于 2013-10-27 21:52:58
您必须使用这样的网卡IP指定一个IPEndPoint:
var endpoint = new IPEndPoint(IPAddress.Parse("192.168.1.2"), portNum);
UdpClient client = new UdpClient(endpoint);发布于 2013-10-27 21:53:12
您没有告诉UdpClient使用哪个IP。
UdpClient有一个可以接受IPEndPoint的构造函数。
const string ip = "192.168.1.2";
const int port = 5556;
var listenEndpoint = new IPEndPoint(IPAddress.Parse(ip), port);
var udpClient = new UdpClient(listenEndpoint);发布于 2013-10-28 21:33:05
我不太擅长C#,但我想我理解问题所在。您正在将您的udpClient绑定到端口5556,但没有指定IP地址。操作系统将为您选择IP地址。我想可能是192.168.1.2或192.168.1.5,你无法判断是哪一个。然后,使用相同的udpClient,您将尝试连接到一个远程主机,侦听192.168.1.2端口5556。也许没人在听。这就是您收到错误的原因。
我会做以下(对我糟糕的C#技能感到抱歉):
这个将监听IP地址192.168.1.2,端口5556。
您也可以在同一个线程中处理udpClient1和udpClient2。重要的是,如果您连接和(IP,端口),必须有一些应用程序/进程监听那里。否则,远程主机将发送一条ICMP消息,指示无法传递数据报。连接被拒绝。
https://stackoverflow.com/questions/19623804
复制相似问题