Socket的UDP方式通信
两台主机A和B,它们在同一网段,并且用Socket的UDP方式通信,A通过Sendto往B的IP发送数据,而B通过Revfrom却能从广播地址收到A的数据.主机B从以下定...
两台主机A和B,它们在同一网段,并且用Socket的UDP方式通信,A通过Sendto往B的IP发送数据,而B通过Revfrom却能从广播地址收到A的数据.
主机B 从以下定义的地址使用 Recvfrom接收到A的数据:
sockaddr_in addrto; //发往的地址
addrto.sin_family = AF_INET; //地址类型为internetwork
addrto.sin_addr.s_addr = INADDR_BROADCAST; //设置ip为广播地址
addrto.sin_port = htons(7861); //端口号为7861
请问为什么主机B能从这个广播地址接收到主机A发送过来的数据呢或者有相关的资料可以告诉我吗? 展开
主机B 从以下定义的地址使用 Recvfrom接收到A的数据:
sockaddr_in addrto; //发往的地址
addrto.sin_family = AF_INET; //地址类型为internetwork
addrto.sin_addr.s_addr = INADDR_BROADCAST; //设置ip为广播地址
addrto.sin_port = htons(7861); //端口号为7861
请问为什么主机B能从这个广播地址接收到主机A发送过来的数据呢或者有相关的资料可以告诉我吗? 展开
1个回答
展开全部
UDP广播数据包的原理如下,其实很简单:1)专门用于同时向网络中所有工作站进行发送的一个地址叫做广播地址。主机标识段host ID 为全1
的IP
地址为广播地址。如果你的IP为:192.168.1.39,子网掩码为:255.255.255.0,则广播地址为:192.168.1.255;如果
IP为192.168.1.39,子网掩码为:255.255.255.192,则广播地址为:192.168.1.63。
2)如果只想在本网络内广播数据,只要向广播地址发送数据包即可,这种数据包可以被路由,它会经由路由器到达本网段内的所有主机,此种广播也叫直接广播;如果想在整个网络中广播数据,要向255.255.255.255发送数据包,这种数据包不会被路由,它只能到达本物理网络中的所有主机,此种广播叫有限广播。
详细的资料可以参考:“对于UDP组播的一些认识”
http://wenku.baidu.com/view/985c0a160b4e767f5acfce14.html
的IP
地址为广播地址。如果你的IP为:192.168.1.39,子网掩码为:255.255.255.0,则广播地址为:192.168.1.255;如果
IP为192.168.1.39,子网掩码为:255.255.255.192,则广播地址为:192.168.1.63。
2)如果只想在本网络内广播数据,只要向广播地址发送数据包即可,这种数据包可以被路由,它会经由路由器到达本网段内的所有主机,此种广播也叫直接广播;如果想在整个网络中广播数据,要向255.255.255.255发送数据包,这种数据包不会被路由,它只能到达本物理网络中的所有主机,此种广播叫有限广播。
详细的资料可以参考:“对于UDP组播的一些认识”
http://wenku.baidu.com/view/985c0a160b4e767f5acfce14.html
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询