下面是编程之家 jb51.cc 通过网络收集整理的代码片段。
编程之家小编现在分享给大家,也给大家做个参考。
// 发送端 #include <iostream> #include <stdio.h> #include <sys/socket.h> #include <unistd.h> #include <sys/types.h> #include <netdb.h> #include <netinet/in.h> #include <arpa/inet.h> #include <string.h> using namespace std; int main() { setvbuf(stdout, NULL, _IONBF, 0); fflush(stdout); int sock = -1; if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1) { cout<<"socket error"<<endl; return false; } const int opt = 1; //设置该套接字为广播类型, int nb = 0; nb = setsockopt(sock, SOL_SOCKET, SO_broADCAST, (char *)&opt, sizeof(opt)); if(nb == -1) { cout<<"set socket error..."<<endl; return false; } struct sockaddr_in addrto; bzero(&addrto, sizeof(struct sockaddr_in)); addrto.sin_family=AF_INET; addrto.sin_addr.s_addr=htonl(INADDR_broADCAST); addrto.sin_port=htons(6000); int nlen=sizeof(addrto); while(1) { sleep(1); //从广播地址发送消息 char smsg[] = {"abcdef"}; int ret=sendto(sock, smsg, strlen(smsg), 0, (sockaddr*)&addrto, nlen); if(ret<0) { cout<<"send error...."<<ret<<endl; } else { printf("ok "); } } return 0; }
// 接收端 #include <iostream> #include <stdio.h> #include <sys/socket.h> #include <unistd.h> #include <sys/types.h> #include <netdb.h> #include <netinet/in.h> #include <arpa/inet.h> #include <string.h> using namespace std; int main() { setvbuf(stdout, 0); fflush(stdout); // 绑定地址 struct sockaddr_in addrto; bzero(&addrto, sizeof(struct sockaddr_in)); addrto.sin_family = AF_INET; addrto.sin_addr.s_addr = htonl(INADDR_ANY); addrto.sin_port = htons(6000); // 广播地址 struct sockaddr_in from; bzero(&from, sizeof(struct sockaddr_in)); from.sin_family = AF_INET; from.sin_addr.s_addr = htonl(INADDR_ANY); from.sin_port = htons(6000); int sock = -1; if ((sock = socket(AF_INET, sizeof(opt)); if(nb == -1) { cout<<"set socket error..."<<endl; return false; } if(bind(sock,(struct sockaddr *)&(addrto), sizeof(struct sockaddr_in)) == -1) { cout<<"bind error..."<<endl; return false; } int len = sizeof(sockaddr_in); char smsg[100] = {0}; while(1) { //从广播地址接受消息 int ret=recvfrom(sock, 100, (struct sockaddr*)&from,(socklen_t*)&len); if(ret<=0) { cout<<"read error...."<<sock<<endl; } else { printf("%s\t", smsg); } sleep(1); } return 0; }
以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。