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,"%24s\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 }