#include<stdio.h> #include<stdlib.h> #include<sys/types.h> #include<sys/socket.h> #include<string.h> #include<unistd.h> #include<arpa/inet.h> #include<net/if.h> #define port 8000 #define client_port 9000 #define buflen 1500 #define ip "192.168.211.255" int main(void){ int sockfd; struct sockaddr_in serveraddr,clientaddr; char buf[buflen] =" xing wen peng"; sockfd = socket(AF_INET,SOCK_DGRAM,0); bzero(&serveraddr,sizeof(serveraddr)); serveraddr.sin_family = AF_INET; serveraddr.sin_port = htons(port); serveraddr.sin_addr.s_addr = htonl(INADDR_ANY); bind(sockfd,(struct sockaddr*)&serveraddr,sizeof(serveraddr)); int flag =1 ; setsockopt(sockfd,SOL_SOCKET,SO_BROADCAST,&flag,sizeof(flag)); //设置socket选项的一个函数,参数众多,参看unix网络编程卷1,让sockfd具有广播能力。 bzero(&clientaddr,sizeof(clientaddr)); clientaddr.sin_family = AF_INET; clientaddr.sin_port = htons(client_port); inet_pton(AF_INET,ip,&clientaddr.sin_addr.s_addr); int i = 0; while(1){ bzero(&buf,buflen); fgets(buf,buflen,stdin); sendto(sockfd,buf,strlen(buf),0,(struct sockaddr*)&clientaddr,sizeof(clientaddr)); sleep(1); } close(sockfd); return 0; }
server端
#include<unistd.h> #include<fcntl.h> #include<net/if.h> #include<sys/socket.h> #include<sys/types.h> #include<arpa/inet.h> #include<stdlib.h> #include<stdio.h> #include<netinet/in.h> #include<strings.h> #define port 9000 #define buflen 1024 int main(void){ struct sockaddr_in localaddr; struct sockaddr_in serveraddr; int connfd; ssize_t len; char buf[buflen]; connfd = socket(AF_INET,SOCK_DGRAM,0); bzero(&localaddr,sizeof(localaddr)); inet_pton(AF_INET,"0.0.0.0",&localaddr.sin_addr.s_addr); localaddr.sin_port = htons(port); localaddr.sin_family = AF_INET; bind(connfd,(struct sockaddr*)&localaddr,sizeof(localaddr)); socklen_t slen; while(1){ slen = sizeof(serveraddr); len = recvfrom(connfd,buf,sizeof(buf),0,(struct sockaddr*)&serveraddr,&slen); printf("%s \n",buf); } close(connfd); return 0; }
客户端