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

 

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...