广播范例:
谁先接受绑定谁。Udp传输都遵循这个规则。
广播步骤:
接受:
1、 创建用户数据包套接字socket()
2、 绑定本地ip地址和端口bind()
3、 接受数据recvfrom()
4、 关闭socketfd(close())
发送:
1、 创建用户数据报套接字socket()
2、 打开广播功能setsockopt();
Int on=1;
Setsockopt(socketfd,SOL_SOCKET,SO_BROADCAST,&on,sizeof(int));
3、 初始化接受方地址(指定该地址为组播地址192.168.1.255)struct sockaddr_in
4、 发送数据sendto()倒数第二个参数为第二步指定的ip和port
关闭套接字socket();
代码范例: 客户端(接受数据) #include<stdio.h> #include<netinet/in.h> #include<stdlib.h> #include<string.h> #include <sys/types.h> #include <sys/socket.h> #include<pthread.h> #include<strings.h> int main() { int socketfd = socket(AF_INET,SOCK_DGRAM,0);//、、、、、1.创建udp套接字 得到socketfd struct sockaddr_in saddr; memset(&saddr,0,sizeof(saddr)); saddr.sin_family = AF_INET; saddr.sin_port = htons(6000); saddr.sin_addr.s_addr = htonl(INADDR_ANY); int s = sizeof(struct sockaddr_in); bind(socketfd,(struct sockaddr *)&saddr,s);//、、、、、、、2、绑定本机ip和port;bind() struct sockaddr_in caddr; char buf1[20]; int n; n = recvfrom(socketfd,buf1,20,0,(struct sockaddr *)&caddr,&s);//、、、、3、接受数据recvfrom()….caddr自动填写的。 buf1[n] = '