1 //**************************************服务器********************************************** 2 #include <stdio.h> 3 #include <stdlib.h> 4 #include <string.h> 5 #include <time.h> 6 #include <sys/types.h> /* See NOTES */ 7 #include <sys/socket.h> 8 #include <netinet/in.h> 9 #include <netinet/ip.h> /* super*/ 10 #include <arpa/inet.h> 11 #include <unistd.h> 12 int server_init(); 13 int main(int argc,const char *argv[]) 14 { 15 //服务器初始化 16 server_init(); 17 //数据交互 18 return 0; 19 } 20 typedef struct sockaddr SA; 21 int server_init() 22 { 23 int sockfd,ret; 24 //创建套接字 25 sockfd=socket(AF_INET,SOCK_DGRAM,0); 26 if(sockfd==-1) 27 { 28 perror("socket"); 29 return -1; 30 } 31 struct sockaddr_in seraddr; 32 seraddr.sin_family=AF_INET; 33 seraddr.sin_port=htons(8181); 34 seraddr.sin_addr.s_addr=htonl(INADDR_ANY); 35 //绑定套接字 36 ret=bind(sockfd,(SA*)&seraddr,sizeof(seraddr)); 37 if(ret==-1) 38 { 39 perror("bind"); 40 return -1; 41 } 42 printf("bind-------------\n"); 43 char buf[32]; 44 struct sockaddr_in cliaddr; 45 socklen_t len=sizeof(cliaddr); 46 while(1) 47 { 48 //接收数据 49 bzero(buf,sizeof(buf)); 50 recvfrom(sockfd,buf,sizeof(buf),0,(SA*)&cliaddr,&len); 51 printf("ip:%s port:%d cli==%s\n",inet_ntoa(cliaddr.sin_addr),ntohs(cliaddr.sin_port),buf); 52 sendto(sockfd,"hello",6,0,(SA*)&cliaddr,sizeof(cliaddr)); 53 } 54 close(sockfd); 55 return sockfd; 56 } 57 //**************************************客户端********************************************** 58 #include <stdio.h> 59 #include <stdlib.h> 60 #include <string.h> 61 #include <time.h> 62 #include <sys/types.h> /* See NOTES */ 63 #include <sys/socket.h> 64 #include <netinet/in.h> 65 #include <netinet/ip.h> /* super*/ 66 #include <arpa/inet.h> 67 #include <unistd.h> 68 int server_init(); 69 int main(int argc,const char *argv[]) 70 { 71 72 //服务器初始化 73 server_init(); 74 75 //数据交互 76 77 78 return 0; 79 } 80 81 typedef struct sockaddr SA; 82 83 int server_init() 84 { 85 int sockfd,ret; 86 //创建套接字 87 sockfd=socket(AF_INET,SOCK_DGRAM,0); 88 if(sockfd==-1) 89 { 90 perror("socket"); 91 return -1; 92 } 93 char buf[32]; 94 struct sockaddr_in seraddr; 95 seraddr.sin_family=AF_INET; 96 seraddr.sin_port=htons(8181); 97 seraddr.sin_addr.s_addr=htonl(INADDR_ANY); 98 while(1) 99 { 100 sleep(2); 101 //接收数据 102 bzero(buf,sizeof(buf)); 103 sendto(sockfd,"hello",24,0,(SA*)&seraddr,sizeof(seraddr)); 104 recvfrom(sockfd,buf,sizeof(buf),0,NULL,NULL); 105 printf("buf==%s\n",buf); 106 } 107 108 close(sockfd); 109 return sockfd; 110 }
浙公网安备 33010602011771号