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

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 }


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值