参考:http://blog.csdn.net/robertkun/article/details/8475843
int init_udp_broadcast_sock(int port, int type)
{
int socket_fd;
struct sockaddr_in addr;
int so_broadcast=1;
socklen_t size;
addr.sin_family=AF_INET;
addr.sin_port=htons(PORT);
if(type == 0)// recv接收端
addr.sin_addr.s_addr=htonl(INADDR_ANY); //recv
else{
addr.sin_addr.s_addr=htonl(INADDR_BROADCAST); //sender 发送端
}
bzero(&(addr.sin_zero),8);
if((socket_fd=(socket(AF_INET,SOCK_DGRAM,0)))==-1) {
perror("socket");
exit(1);
}
setsockopt(socket_fd,SOL_SOCKET,SO_BROADCAST,&so_broadcast,sizeof(so_broadcast));
if(type == 0)//recv接收端
{
if((bind(socket_fd,(struct sockaddr *)&addr, sizeof(struct sockaddr)))==-1)
{
perror("bind");
exit(1);
}
}
return socket_fd;
}