使用套接字实现广播通信

51 篇文章 0 订阅

广播消息使用UDP通信协议

1. Windows需要先调用WinSock版本,然后再创建套接字;而在Linux下可以直接创建套接字;

注意:创建UDP套接字

socket(AF_INET, SOCK_DGRAM, 0);

2.调用setsockopt()函数设置套接字;

函数说明如下:

int setsockopt(SOCKET s,int level,int optname,const char FAR *optval,int optlen);
其中,

s是需要设定的套接字;

level指明设定套接字的层次,提供SOL_SOCKET和IPPROTO_TCP两种选择;其中SOL_SOCKET是表示套接字API层次,一般用这个值;

optname指明对应level上的具体选项名;

optval一般用整数来使某个选项能/不能使用,非零值使选项可用,零值使选项不可用;

optname指明optval的长度;

为了使套接字具备广播功能,设置套接字如下:

setsockopt(mySock, SOL_SOCKET, SO_BROADCAST, (char *)&nBroad, sizeof(int)

3.设置广播地址

由于使用UDP通信,需使用sendto()函数来发送消息,而该函数需要指定目的地址。所以,设置目的地址为广播地址

IP地址则可使用INADDR_BROADCAST。该宏表示“255.255.255.255”,即可以在全局网络进行广播。据说在Linux中,该值是被禁止使用的,但实验发现是可以的。看来网上的信息不可轻信呀!(跟自己的环境有关系,最好自己试试)

端口可以自己指定(不与已有端口冲突即可)

SOCKADDR_IN broadAddr;
broadAddr.sin_family=AF_INET;
broadAddr.sin_port=htons(PORT);
broadAddr.sin_addr.S_un.S_addr=htonl(INADDR_BROADCAST);
4.广播信息的接收

跟普通UDP信息的接收相同,不赘述。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值