?? boradcast_sample.c.bak
字號:
#include <unistd.h>#include <sys/socket.h>#include <sys/types.h>#include <netinet/in.h>#include <stdio.h>#include <errno.h>#include <signal.h>void sig_handle(int signum){ return;}int main(int argc,char *argv[]){ char buffer[512]; int bordcast_socket; int read_count=0; int addr_len=sizeof(struct sockaddr); struct sockaddr_in addr_info,addr_net; int opt=1; if(argc!=2) { printf("Use page boradcast <ip address>\n"); return -1; } addr_info.sin_family=AF_INET; addr_info.sin_addr.s_addr=inet_addr(argv[1]); addr_info.sin_port=htons(5555); bordcast_socket=socket(AF_INET,SOCK_DGRAM,0); if(bordcast_socket<0) { perror("bordcast_socket"); return -1; } signal(SIGALRM,sig_handle); setsockopt(bordcast_socket,SOL_SOCKET,SO_BROADCAST,&opt,sizeof(opt)); while(fgets(buffer,sizeof(buffer),stdin)!=NULL) { sendto(bordcast_socket,buffer,strlen(buffer),0,(struct sockaddr *)&addr_info,addr_len); alarm(5); memset(buffer,0,sizeof(buffer)); for (; ; ) { read_count=recvfrom(bordcast_socket,buffer,sizeof(buffer),0,&addr_net,&addr_len); if(read_count<0 && errno==EINTR) { continue; } else { printf("from %s\n",inet_ntoa(addr_net.sin_addr)); } } } return 0;}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -