Socket通信,向局域网内的所有机器发送一个广播,然后接受这些机器给我回发的包。100分求解。
Socket通信,向局域网内的所有机器发送一个广播,然后接受这些机器给我回发的包。实际操作我已经做得差不多了,但是有一个问题,就是我发现我接收到的回发的包,跟实际上回发给...
Socket通信,向局域网内的所有机器发送一个广播,然后接受这些机器给我回发的包。实际操作我已经做得差不多了,但是有一个问题,就是我发现我接收到的回发的包,跟实际上回发给我包的机器总数不同,也就是说有一些机器给我回发了,但是我并没有接收到。
我有C++得code,设置也基本是一样的,C++的Code就可以接收到所有回发给我的。
c++里面有一个设置我发送广播的机器的端口号,也就是说指定让我机器的某个端口发送,
但是在C#中我没找到设置这个属性的位置和属性,我不确定那些miss的包是因为这个引起的。
求解,讲解和源码都可以。答的好的追加。别的不多就分多。 展开
我有C++得code,设置也基本是一样的,C++的Code就可以接收到所有回发给我的。
c++里面有一个设置我发送广播的机器的端口号,也就是说指定让我机器的某个端口发送,
但是在C#中我没找到设置这个属性的位置和属性,我不确定那些miss的包是因为这个引起的。
求解,讲解和源码都可以。答的好的追加。别的不多就分多。 展开
1个回答
展开全部
UDP 广播包并不总是确保所有机器都会收到此包的,所以可能是不是所有机器都收到了一个广播包,所以自然就不是所有机器都会发送回复包。
通常的用法是为 UDP 广播包包含一个 id ,多次发出,其它机器收到一个新的 id 的包时回复,忽略已回复过的 id
通常的用法是为 UDP 广播包包含一个 id ,多次发出,其它机器收到一个新的 id 的包时回复,忽略已回复过的 id
更多追问追答
追问
您有看全我的问题么?我说了 我有份C++的代码,我C#的代码是照C++改的,C++发送广播,收到的反馈包的IP数量和C# 发送广播接收到的数量不一样,按照你的说法,不能确定所有机器都会收到我发送的包,但是为什么C++的就能,而C#的就不能?
C++和C# 显示有反馈包的IP是固定的那几台机器。只不过C#的少了几台机器。
追答
那可能和域环境有关,因为 c# 中的 udpclient 和你用 c++ 时的相对 CSocket 提供的相关辅助函数是有一定差别的,如果你本地有两个 ip 段,如 192.168.0.n 与 192.168.1.n ,那么广播包地址 192.168.0.255 与 255.255.255.255 发送到达的范围就是不一样的,可能你在 c# 中指定的广播地址没有 c++ 中的范围大。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询