unix 网络编程udp简单例程
admin
2023-02-04 20:20:02
0

 

  1. server.c 
  2.  
  3. #include <sys/types.h>          /* See NOTES */ 
  4. #include <sys/socket.h> 
  5. #include <stdio.h> 
  6. #include <stdlib.h> 
  7. #include <string.h> 
  8. #include <stdio.h> 
  9. #include <arpa/inet.h> 
  10. #include <unistd.h> 
  11.  
  12.  
  13.  
  14. int main(int argc, char** argv) 
  15.     int ret; 
  16.     int len = sizeof(struct sockaddr); 
  17.      
  18.      
  19. //创建socket   
  20.     int sockfd = socket(AF_INET, SOCK_DGRAM,0); 
  21.     if(sockfd == -1) 
  22.     { 
  23.         perror("socket\n"); 
  24.         exit(1); 
  25.     } 
  26.      
  27. //将addr地址与socket绑定在一起 
  28.  
  29.     //初始化地址 
  30.     struct sockaddr_in addr; 
  31.     addr.sin_family = AF_INET
  32.     addr.sin_port = htons(4444); 
  33.     addr.sin_addr.s_addr = INADDR_ANY
  34.     memset(addr.sin_zero,8,0); 
  35.      
  36.     //进行绑定 
  37.     ret = bind(sockfd, (struct sockaddr*)&addr, len); 
  38.     if(ret == -1) 
  39.     { 
  40.         perror("bind\n"); 
  41.         exit(1);     
  42.     } 
  43.      
  44. //接收数据 
  45.     struct sockaddr_in addr_client; 
  46.     while(1) 
  47.     { 
  48.         char buf[100]; 
  49.         memset(buf,100,0); 
  50.         socklen_t length = sizeof(struct sockaddr); 
  51.         fputs("等待数据。。。。\n",stdout); 
  52.         ssize_t recnum = recvfrom(sockfd, buf, 100,MSG_WAITALL, (struct sockaddr*)&addr_client,&length); 
  53.         if(recnum<0
  54.         { 
  55.             perror("recvfrom\n"); 
  56.             exit(1);             
  57.         } 
  58.         printf("received(%d): %s\n",recnum,buf); 
  59.         if(strcmp(buf,"stop") == 0) 
  60.         { 
  61.             break; 
  62.         } 
  63.     }    
  64.      
  65.     close(sockfd); 
  66.     fputs("退出成功!!\n",stdout); 
  67.      
  68.     return 0; 
  69.  
  70. ----------------------------
  71. client.c 
  72.  
  73.  
  74. #include <sys/types.h>          /* See NOTES */ 
  75. #include <sys/socket.h> 
  76. #include <stdio.h> 
  77. #include <stdlib.h> 
  78. #include <string.h> 
  79. #include <stdio.h> 
  80. #include <arpa/inet.h> 
  81. #include <unistd.h> 
  82.  
  83. int main(int argc, char** argv) 
  84.  
  85.  
  86.     int len = sizeof(struct sockaddr); 
  87. //创建socket   
  88.     int sockfd = socket(AF_INET, SOCK_DGRAM,0); 
  89.     if(sockfd == -1) 
  90.     { 
  91.         perror("socket\n"); 
  92.         exit(1); 
  93.     } 
  94.      
  95. //将addr地址与socket绑定在一起 
  96.  
  97.     //初始化地址 
  98.     struct sockaddr_in addr; 
  99.     addr.sin_family = AF_INET
  100.     addr.sin_port = htons(4444); 
  101.     addr.sin_addr.s_addr = inet_addr("127.0.0.1"); 
  102.     memset(addr.sin_zero,8,0); 
  103.      
  104.     while(1) 
  105.     { 
  106.         char buf[100]; 
  107.         memset(buf,100,0); 
  108.         fputs("请输入内容:\n",stdout); 
  109.          
  110.         //存在scanf字符串空格问题 
  111.         scanf("%s",buf); 
  112.         fputs("确认发送内容为:\n",stdout); 
  113.         fputs(buf,stdout); 
  114.         printf("\n"); 
  115.         sendto(sockfd, buf, 100, 0, (struct sockaddr*)&addr, len); 
  116.         fputs("确认发送完成\n",stdout); 
  117.     } 
  118.          
  119.     return 0; 
  120.  
  121. ----------------------------
  122. makefile 
  123.  
  124. .PHONY: all clean 
  125.  
  126. all:server client 
  127.  
  128. server:server.c 
  129.     gcc -o server server.c -Wall 
  130. client:client.c 
  131.     gcc -o client client.c -Wall 
  132.      
  133. clean: 
  134.     rm -f *.o client server *~ 

 

相关内容

热门资讯

菲尔兹奖得主邓煜:做真正喜欢的... 文 | 《中国科学报》 记者 赵广立初次和邓煜对话是轻松的,没有被数学天才“碾压”的感受。他会耐心听...
如何抢抓6G机遇?低空怎样飞得... 7月23日,记者从双流区获悉,2026天府科学家创新发展大会暨成都科产融合对接活动双流(电子信息)专...
腾讯云官宣大规模部署国产化算力... 在2026世界人工智能大会的分论坛现场,腾讯云高管首次公开明确宣布,将大规模部署国产化算力,目标直指...
2026“光影科学梦”影视资源... 中新网北京7月23日电 (记者 孙自法)中国科技馆7月23日向媒体通报说,利用沉浸式体验的虚拟现实(...
产教共生、港数融合,解码日照数... 数字浪潮奔涌向前,人工智能与数据要素已然成为山东数字强省建设的关键变量与战略支点。近年来,山东锚定国...
原创 v... 现在的手机行业可以用“一地鸡毛”来形容了,先是魅族宣布不做手机了,如今真我有宣布退出中国市场,而红米...
谷歌现在允许用户通过自拍视频登... IT之家 7 月 23 日消息,谷歌正在推出一种新的账号登录和恢复方式,当用户无法使用传统找回方式时...
中国数学,迎来了菲尔兹时刻 14亿中国人里,必定还有无数具有数学天赋的人,要想人尽其才,那就得需要社会为他们提供一个更公平、也更...
谷歌Pixel 11/Pro/... 7 月 23 日消息,科技媒体 mymobiles 昨日(7 月 22 日)发布博文,在谷歌 8 月...
胡锡进:梁文锋倾吐衷肠,甩出美... 梁文锋近日的一个内部谈话流传到网上,引起网友的广泛追捧。它展现了中国新一代年轻科技精英的追梦情怀,对...