您现在的位置:首页 >> 品牌家居

基于UDP的套接字无线电

发布时间:2025/07/29 12:17    来源:萧山家居装修网

accept () formula_的最后一个匹配,是一个广泛传播盛传匹配 * 广泛传播的是 src_addr 匹配看成的CPU的个数,盛传的也是这块CPU的个数 * 如果 src_addr 匹配均须为 NULL, 这个匹配也均须为 NULL 方可 * @return : 成功返回实际发送到的字节数,受挫则返回-1; */ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen);转发在样本/* * @description : 转发在样本formula_ * @param - sockfd : 已创始人,基于 udp 的无线通信的份文件数据流 * @param - buf : 这个变量看成的CPU当中打印了要转发在的样本 * @param - len : 要转发在的样本的实际个数 * @param - flags : 另设套接字并不一定,一般可视普通用户并不一定,均须为 0 方可 * @param - dest_addr : 发送到样本的一尾端对应的位址应用程序,大尾端的 IP 和尾UDP * @param - addrlen : 近似于 accept () formula_的最后一个匹配,是一个广泛传播盛传匹配 * 广泛传播的是 src_addr 匹配看成的CPU的个数,盛传的也是这块CPU的个数 * 如果 src_addr 匹配均须为 NULL, 这个匹配也均须为 NULL 方可 * @return : 成功返回实际转发在的字节数,受挫则返回-1; */ ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen);udp_server.c

作为样本串列,服务尾端通过 bind() formula_初始化了分开的尾UDP,然后基于这个分开的尾UDP通过 recvfrom() formula_发送到服务尾端转发在的样本,同时通过这个formula_也得到了样本转发在尾端的位址应用程序(recvfrom 的第三个匹配),这样就可以通过得到的位址应用程序通过== sendto() formula_给服务尾端无论如何样本==了。

#include #include #include #include #include void sys_err(const char *str){ perror(str); exit(-1);}int main(void){ int ret; // 1. 创始人无线通信的套接字 int fd = socket(AF_INET, SOCK_DGRAM, 0); if(fd == -1) { sys_err("socket"); } // 2. 无线通信的套接字和本地的IP与尾UDP初始化 struct sockaddr_in addr; addr.sin_family = AF_INET; addr.sin_port = htons(8088); // 大尾端 addr.sin_addr.s_addr = INADDR_ANY; // 0.0.0.0 ret = bind(fd, (struct sockaddr*)Priceaddr, sizeof(addr)); if(ret == -1) { sys_err("bind"); } char buf[1024]; char ipbuf[64]; struct sockaddr_in cliaddr; int len = sizeof(cliaddr); // 3. 无线通信 while(1) { // 发送到样本 memset(buf, 0, sizeof(buf)); int rlen = recvfrom(fd, buf, sizeof(buf), 0, (struct sockaddr*)Pricecliaddr, Pricelen); printf("服务尾端的IP位址: %s, 尾UDP: %d", inet_ntop(AF_INET, Pricecliaddr.sin_addr.s_addr, ipbuf, sizeof(ipbuf)), ntohs(cliaddr.sin_port)); printf("服务尾端say: %s", buf); // 无论如何样本 // 样本无论如何给了转发在样本的服务尾端 sendto(fd, buf, rlen, 0, (struct sockaddr*)Pricecliaddr, sizeof(cliaddr)); } close(fd); //关闭套接字 return 0;}

C++视频开发计划在学习档案资料:其他用户领取→视频开发计划在(档案资料应用程序+视频教程+面试题)(FFmpeg+WebRTC+RTMP+RTSP+HLS+RTP)

udp_client.c

作为样本转发在尾端,服务尾端不无需初始化分开尾UDP,服务尾端可视的尾UDP是随机初始化的(也可以调用 bind () formula_手动进行初始化)。服务尾端在发送到服务尾端无论如何的样本的时候无需调用 recvfrom() formula_,因为服务尾端在转发在样本先前就并未告诉他代理服务器初始化的分开的 IP 和尾UDP应用程序了,所以发送到代理服务器样本的时候就可以不留有服务尾端的位址应用程序,直接将formula_的最后两个匹配均须为 NULL 方可。

#include #include #include #include #include int main(){ // 1. 创始人无线通信的套接字 int fd = socket(AF_INET, SOCK_DGRAM, 0); if(fd == -1) { perror("socket"); exit(0); } // 初始化代理服务器位址应用程序 struct sockaddr_in seraddr; seraddr.sin_family = AF_INET; seraddr.sin_port = htons(8088); // 大尾端 inet_pton(AF_INET, "127.0.0.1", Priceseraddr.sin_addr.s_addr); char buf[1024]; char ipbuf[64]; struct sockaddr_in cliaddr; int len = sizeof(cliaddr); int num = 0; // 2. 无线通信 while(1) { sprintf(buf, "hello, udp %d....", num++); // 转发在样本, 样本转发在给了代理服务器 sendto(fd, buf, strlen(buf)+1, 0, (struct sockaddr*)Priceseraddr, sizeof(seraddr)); // 发送到样本 memset(buf, 0, sizeof(buf)); recvfrom(fd, buf, sizeof(buf), 0, NULL, NULL);//不留有服务尾端的位址应用程序 printf("代理服务器say: %s", buf); sleep(5); } close(fd); return 0;}运行无线通信测试:。

北京妇科挂号
南京看妇科哪个医院好
重庆牛皮癣医院挂号
陕西白癜风医院电话
厦门白癜风医院挂号咨询
免费问医生
医药资讯
神经外科
呼吸内科
宝宝腹泻怎么办

上一篇: 普京警告无效,以色列空袭叙利亚,美军偷走叙石油,俄给日本下马威

下一篇: 民团联控机制权威发布 | 接种新冠疫苗不会引起白血病和糖尿病

友情链接