您的位置:首页 > 编程语言

udp协议之server.c/client.c 源代码分析

2017-04-04 22:41 387 查看
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 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c源代码 udp协议
相关文章推荐