91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于UDP協議的進程間通信

發布時間:2020-10-12 11:20:42 來源:網絡 閱讀:339 作者:小鎮青苔 欄目:網絡安全

UDP協議的主要特點:

  1. UDP是無連接的

  2. UDP使用盡最大努力交付

  3. UDP是面向報文的

  4. 沒有擁塞控制

  5. 支持一對一、一對多、多對一、多對多的交互通信

  6. UDP首部開銷小

UDP協議是無連接的并且面向數據塊的。所以client端不需要與server端進行連接,直接發送消息。

server:
 1 #include<stdio.h>
  2 #include<stdlib.h>
  3 #include<sys/types.h>
  4 #include<sys/socket.h>
  5 #include<netinet/in.h>
  6 #include<arpa/inet.h>
  7 #include<string.h>
  8 void usage(char *port)
  9 {
 10     printf("%s,[ip],[port]\n",port);
 11 }
 12 int main(int argc,char *argv[])
 13 {
 14     if(argc!=3)
 15     {
 16         usage(argv[0]);
 17         exit(1);
 18     }
 19     int sock = socket(AF_INET,SOCK_DGRAM,0); //創建套接字
 20     if(sock<0)
 21     {
 22         perror("socket");
 23         return 1;
 24     }
 25     int port = atoi(argv[2]);
 26     char *ip = argv[1];
 27     struct sockaddr_in client;
 28     client.sin_family = AF_INET;
 29     client.sin_port = htons(port);
 30     client.sin_addr.s_addr = inet_addr(ip);
 31     if(bind(sock,(struct sockaddr*)&client,sizeof(client))<0)
 32     {
 33         perror("bind");
 34         exit(1);
 35     }
 36     char buf[1024];
 37     struct sockaddr_in remote;
 38     socklen_t len = sizeof(remote);
 39     while(1)
 40     {
 41         ssize_t size = recvfrom(sock,buf,sizeof(buf),0,(struct sockaddr*)&re    mote,&len);  //接收消息
 42         if(size>0)
 43         {
 44             buf[size-1]='\0';
 45             printf("%s,%d: %s\n",inet_ntoa(remote.sin_addr),ntohs(remote.sin    _port),buf);
 46 
 47         }
 48         else if(size==0)
 49         {}
 50         else
 51         {
 52             perror("recvfrom");
 53             exit(2);
 54         }
 55         fflush(stdout);
 56     }
 57     return 0;
 58 }
 
 client:
 1 #include<stdio.h>
  2 #include<stdlib.h>
  3 #include<sys/types.h>
  4 #include<sys/socket.h>
  5 #include<string.h>
  6 #include<unistd.h>
  7 #include<netinet/in.h>
  8 #include<arpa/inet.h>
  9 void usage(char *port)
 10 {
 11     printf("%s,[ip],[port]\n",port);
 12 }
 13 int main(int argc,char *argv[])
 14 {
 15     if(argc!=3)
 16     {
 17         usage(argv[0]);
 18         exit(1);
 19     }
 20     int sock = socket(AF_INET,SOCK_DGRAM,0);
 21     if(sock<0)
 22     {
 23         perror("socket");
  24         return 1;
 25     }
 26     int port = atoi(argv[2]);
 27     char *ip = argv[1];
 28     struct sockaddr_in remote;
 29     remote.sin_family = AF_INET;
 30     remote.sin_port = htons(port);
 31     remote.sin_addr.s_addr = inet_addr(ip);
 32     char buf[1024];
 33     while(1)
 34     {
 35         memset(buf,'\0',sizeof(buf));
 36         ssize_t _s = read(0,buf,sizeof(buf)-1);
 37         if(_s<0)
 38         {
 39             perror("read");
 40             exit(1);
 41         }
 42         ssize_t size = sendto(sock,buf,strlen(buf),0,(struct sockaddr*)&remo    te,sizeof(remote)); //發送消息
 43         if(size<0)
 44         {
 45             perror("sendto");
  46             exit(1);
 47         }
 48 
 49     }
 50     return 0;
 51 }
 
 
 [fbl@localhost udp]$ ./server 192.168.1.106 8080
192.168.1.106,33647: how are you
192.168.1.106,33647: hi
192.168.1.106,33647: hnxu
^C
[fbl@localhost udp]$ 
[fbl@localhost udp]$ ./client 192.168.1.106 8080
how are you
hi
hnxu
^C
[fbl@localhost udp]$


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新密市| 兰溪市| 青浦区| 泰安市| 织金县| 修文县| 德化县| 江达县| 天台县| 汉中市| 交口县| 延长县| 彰化县| 吉安县| 盐边县| 牟定县| 白城市| 临沧市| 延庆县| 九台市| 前郭尔| 论坛| 龙胜| 泰兴市| 河曲县| 科尔| 易门县| 天祝| 昔阳县| 略阳县| 青川县| 南平市| 连南| 罗江县| 永新县| 武清区| 仁化县| 绥芬河市| 博湖县| 灵璧县| 银川市|