b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

C语言socket UDP广播的发送和接收示例

电脑杂谈  发布时间:2019-12-30 23:01:14  来源:网络整理

socket udp_udp socket bind_c socket udp

C 语言 socket UDP 广播的发送和接收示例server.c 通过 UDP 广播的方式衔的指定端口发送广 播信息client.c 敖指定端口,并阻塞接收广播内容然骸吵绦<还幸坏阈枰⒁猓蔷褪 setsockopt() 函数的使用。使用不当很可能会斥。通过SO_REUSEADDR 选项可以实现端口号的重用,SO_BROADCAST 选项表示应发送的是广播信息c socket udp,optval 参 数应帮合理的车(这里是 1),奋可能会发送失败(sendto() permission denied) 发送广播的程衏pp] view plaincopy#include<stdio.h>#include<stdlib.h> #include<string.h>#include<sys/types.h> #include<sys/socket.h>#include<sys/wait.h> #include<netinet/in.h>#include<arpa/inet.h> #include<errno.h> intmain(){char msg[128] = "I am broadCast message fromserver!";int brdcFd;if((brdcFd = socket(PF_INET,SOCK_DGRAM, 0)) == -1){printf("socket fail\n");return -1;}int optval = 1;//这富定应更改c socket udp,否攒导致 sendto()失败setsockopt(brdcFd,SOL_SOCKET, SO_BROADCAST | SO_REUSEADDR,&optval, sizeof(int));struct sockaddr_in theirAddr;memset(&theirAddr, 0, sizeof(struct sockaddr_in));theirAddr.sin_family = AF_INET;theirAddr.sin_addr.s_addr = inet_addr("255.255.255.255");theirAddr.sin_port = htons(4001);int sendBytes;if((sendBytes = sendto(brdcFd, msg, strlen(msg), 0,(struct sockaddr *)&theirAddr, sizeof(struct sockaddr))) ==-1){printf("sendto fail, errno=%d\n", errno);return -1;}printf("msg=%s, msgLen=%d,sendBytes=%d\n", msg, strlen(msg), sendBytes);close(brdcFd);return 0; } 接收程衏pp] viewplaincopy#include<stdlib.h> #include<stdio.h>#include<string.h> #include<sys/types.h>#include<netinet/in.h> #include<netdb.h>#include<sys/socket.h> #include<sys/wait.h>#include<arpa/inet.h> int main(){int sockListen;if((sockListen = socket(AF_INET, SOCK_DGRAM, 0)) ==-1){printf("socket fail\n");return-1;}int set = 1;setsockopt(sockListen,SOL_SOCKET, SO_REUSEADDR, &set, sizeof(int));struct sockaddr_in recvAddr;memset(&recvAddr, 0,sizeof(struct sockaddr_in));recvAddr.sin_family =AF_INET;recvAddr.sin_port = htons(4001);recvAddr.sin_addr.s_addr = INADDR_ANY;// 必须绑定,忿法if(bind(sockListen, (struct sockaddr*)&recvAddr, sizeof(struct sockaddr)) ==-1){printf("bind fail\n");return-1;}int recvbytes;char recvbuf[128];int addrLen = sizeof(struct sockaddr_in);if((recvbytes =recvfrom(sockListen, recvbuf, 128, 0,(structsockaddr *)&recvAddr, &addrLen)) !=-1){recvbuf[recvbytes] = '\0';printf("receive a broadCast messgse:%s\n",recvbuf);}else{printf("recvfromfail\n");}close(sockListen);return 0; }


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-135247-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...