首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UDP多网组网

UDP多网组网
EN

Stack Overflow用户
提问于 2013-10-27 21:27:02
回答 3查看 2.7K关注 0票数 5

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

我想通过使用IP 192.168.1.2的第一个配置来发送UDP消息。

代码语言:javascript
复制
using (var udpClient = new UdpClient(5556))
{
    udpClient.Connect(IPAddress.Parse("192.168.1.2"), 5556);
    // DO STUFF
}

当我尝试这个时,我会得到以下错误-

由于目标机器主动拒绝连接,因此无法建立连接。

奇怪的是,当我禁用我的另一个网络,这是完美的,但与2连接(局域网和WiFi),它不再工作了.我想是它发错适配器了吧?这是因为我的默认网关是相同的还是我做错了什么?我刚开始开发基于网络的应用.

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-27 21:52:58

您必须使用这样的网卡IP指定一个IPEndPoint

代码语言:javascript
复制
var endpoint = new IPEndPoint(IPAddress.Parse("192.168.1.2"), portNum);
UdpClient client = new UdpClient(endpoint);
票数 1
EN

Stack Overflow用户

发布于 2013-10-27 21:53:12

您没有告诉UdpClient使用哪个IP。

UdpClient有一个可以接受IPEndPoint构造函数

代码语言:javascript
复制
const string ip = "192.168.1.2";
const int port = 5556;

var listenEndpoint = new IPEndPoint(IPAddress.Parse(ip), port);
var udpClient = new UdpClient(listenEndpoint);
票数 1
EN

Stack Overflow用户

发布于 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#技能感到抱歉):

  • 在一个线程或程序/进程中拥有两个udpClient: var udpClient1 =新UdpClient("192.168.1.2",5556);

这个将监听IP地址192.168.1.2,端口5556。

  • 在第二个线程或程序/进程中: var udpClient2 =新的UdpClient();//与操作系统将绑定到哪个(IP,端口)无关。//连接到侦听udpClient2.Connect(IPAddress.Parse("192.168.1.2"),的对等/服务器(IP=192.168.1.2,port=5556)

您也可以在同一个线程中处理udpClient1和udpClient2。重要的是,如果您连接和(IP,端口),必须有一些应用程序/进程监听那里。否则,远程主机将发送一条ICMP消息,指示无法传递数据报。连接被拒绝。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19623804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档