udp 服务器程序源码,需要在客户端之前启动(具体原因还需分析)
1 #include<sys/types.h>
2 #include<sys/socket.h> 3 #include<netinet/in.h> 4 #include<time.h> 5 #include<string.h> 6 #include<unistd.h> 7 #include<stdio.h> 8 #define BUFFLEN 1024 //最大缓冲 9 #define SERVER_PORT 8888 //监听端口 10 int main(int argc, char *argv[]) 11 { 12 int s; 13 struct sockaddr_in local, to; 14 time_t now; 15 char buff[BUFFLEN]; 16 char string[BUFFLEN]; //用于获取桌面消息的发送 17 int n = 0; 18 socklen_t len = sizeof(to); 19 20 s = socket(AF_INET,SOCK_DGRAM,0); 21 22 memset(&local,0,sizeof(local)); //绑定于本地地址 23 local.sin_family = AF_INET; 24 local.sin_addr.s_addr = htonl(INADDR_ANY); //任意地址, 25 local.sin_port = htons(SERVER_PORT); 26 27 bind(s, (struct sockaddr *)&local,sizeof(local)); 28 29 while(1) 30 { 31 memset(buff, 0, BUFFLEN); 32 memset(string,0,BUFFLEN); 33 n = recvfrom(s,buff,BUFFLEN,0,(struct sockaddr *)&to,&len); 34 printf("The string recived is :%s",buff); 35 gets(string); //gets() 24 local.sin_addr.s_addr = htonl(INADDR_ANY); 25 local.sin_port = htons(SERVER_PORT); 26 27 bind(s, (struct sockaddr *)&local,sizeof(local)); 28 29 while(1) 30 { 31 memset(buff, 0, BUFFLEN); 32 memset(string,0,BUFFLEN); 33 n = recvfrom(s,buff,BUFFLEN,0,(struct sockaddr *)&to,&len); 34 printf("The string recived is :%s",buff); 35 gets(string);// 用于桌面获取消息 36 // scanf("%s",string);//用于桌面获取消息 37 memset(buff,0,BUFFLEN); 38 now = time(NULL); //获取当前时间 39 sprintf(buff,"$s\r\n",ctime(&now)); 40 strcat(buff,string); //连接两字符的发送 41 sendto(s,buff,strlen(buff)*2,0,(struct sockaddr *)&to,len); 42 } 43 close(s); 44 return 0;45 }
udp 客户端的消息的发送
1 #include<sys/types.h> 2 #include<sys/socket.h> 3 #include<netinet/in.h> 4 #include<time.h> 5 #include<string.h> 6 #include<unistd.h> 7 #include<stdio.h> 8 #define BUFFLEN 1024 9 #define SERVER_PORT 8888 10 int main(int argc, char *argv[]) 11 { 12 int s; 13 struct sockaddr_in server; 14 char buff[BUFFLEN]; 15 int n = 0; 16 socklen_t len = 0; 17 18 s = socket(AF_INET, SOCK_DGRAM, 0); 19 20 memset(&server,0,sizeof(server)); 21 server.sin_family = AF_INET; 22 server.sin_addr.s_addr = htonl(INADDR_ANY); 23 server.sin_port = htons(SERVER_PORT); 24 25 while(1) 26 { 27 memset(buff, 0, BUFFLEN); 28 strcpy(buff,"TIME"); //it has send the TIME to the server.but the se rver not print it 29 //此处可再设置交互式发送消息的 buffer 30 sendto(s,buff,BUFFLEN,0,(struct sockaddr *)&server,sizeof(server)); 31 32 memset(buff,0,BUFFLEN); 33 len = sizeof(server); 34 n = recvfrom(s,buff,BUFFLEN,0,(struct sockaddr *)&server,&len); 35 36 if(n > 0){ 37 printf("TIME:%s",buff); 38 } 39 sleep(5); 40 } 41 close(s); 42 return 0; 43 }