vxworks中如何实现广播

  介绍

这篇文章主要介绍了vxworks中如何实现广播,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

<>节有了单播和组播,广播也跑不了。广播,广播,与单播的区别就是地址不同。广播用的地址是255.255.255.255;而且广播数据不会被路由器转发,限定于局域网内,否则就是网络风暴了
  

广播的代码其实更简单,直接参考单播和组播的例子写一个

服务器是在单播的基础上略加改动

<李>

调用套接字()打开一个套接字

<李>

调用绑定()指定港信息

<李>

调用setsockopt()加入广播

<李>

调用recvfrom()阻塞接收

<李>

最后,调用关闭()关闭套接字

 vxworks中如何实现广播

广播客户更简单了

<李>

调用套接字()打开一个套接字

<李>

指定广播地址和港信息

<李>

调用sendto()发送数据

<李>

最后,调用关闭()关闭套接字

 vxworks中如何实现广播

完整代码如下

<节>
 <代码> 
<代码> # include & lt; stdio.h>,*//* pritnf() <代码> # include & lt; stdLib.h>,/* malloc() */ <代码> # include & lt; sockLib.h>/*套接字()*/ <代码> # include & lt; inetLib.h>/*结构指向sockaddr_in */ <代码>
<代码> # define HOST_PORT 60000 <代码> # define MIN_SIZE, 10 <代码> # define MIN_TIMES 10 <代码>
<代码>空白broadServer (int, int, int) <代码>{ <代码>,,结构指向sockaddr_in localAddr; <代码>,,结构指向sockaddr_in peerAddr; <代码>,int大敌;addrSize=sizeof (struct sockaddr); <代码>,int大敌;选择=1; <代码>,int大敌;fd; <代码>,int大敌;num; <代码>,,char *缓冲; <代码>,,如果(港口,& lt;=2000)端口,=HOST_PORT; <代码>,,如果(大小,& lt;=0),,大?MIN_SIZE; <代码>,,如果(* & lt;=0),,乘以=MIN_TIMES; <代码>,,printf(“祝辞、大小、端口), <代码>,, <代码>,,/*打开插座*/ <代码>,,fd=插座(AF_INET SOCK_DGRAM 0); <代码>,, <代码>,,/*指定本地地址信息*/ <代码>,localAddr。sin_family,,,=AF_INET; <代码>,localAddr。sin_port,,,,=htons(港口); <代码>,localAddr.sin_addr。s_addr=INADDR_ANY; <代码>,,绑定(fd, (struct sockaddr *), localAddr, sizeof (struct sockaddr)); <代码>
<代码>,,/*加入广播*/ <代码>,,setsockopt (fd, SOL_SOCKET SO_BROADCAST,设置(char *),选择,sizeof (int)); <代码>
<代码>,,缓冲=(char *) malloc(大小), <代码>,,在((*)在0) <代码>,,,,{ <代码>,,,,/*接收广播数据*/ <代码>,,,,num=recvfrom (fd、缓冲、大小0 <代码>,,,,,,,,,,,(struct sockaddr *), peerAddr,, addrSize); <代码>,,,,如果(num & lt;0)打破; <代码>,,,,printf (“broadServer: recv % d % s \ n"字符;, <代码>,,,,,,,,,num inet_ntoa (peerAddr.sin_addr)); <代码>,,,代码,} <代码>
<代码>,,/*关闭套接字*/ <代码>,,关闭(fd); <代码>,,免费(缓冲); <代码>,,printf (“broadServer:结束\ n"); <代码>,,,,} <代码>
   <节>
 <代码> 
<代码> # include & lt; stdio.h>,*//* pritnf() <代码> # include & lt; stdLib.h>,/* malloc() */ <代码> # include & lt; sockLib.h>/*套接字()*/ <代码> # include & lt; inetLib.h>/*结构指向sockaddr_in */ <代码>
<代码> # define HOST_PORT 60000 <代码> # define MIN_SIZE, 1 <代码> # define MIN_TIMES 1 <代码>
<代码>空白broadClient (int, int, int) <代码>{ <代码>,,结构指向sockaddr_in serverAddr; <代码>,int大敌;选择=1; <代码>,int大敌;fd;, <代码>,,char *缓冲; <代码>,int大敌;num;,, <代码>,,如果(端口& lt;=2000)端口=HOST_PORT; <代码>,,如果(大小& lt;=0),代码,大?MIN_SIZE; <代码>,,如果(times<=0),,乘以=MIN_TIMES; <代码>,,缓冲=(char *) malloc(大小), <代码>,,(num=0;num<规模;num + +)缓冲区(num)=(num % 26) + & # 39;一个# 39;;

vxworks中如何实现广播