<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      【轉(zhuǎn)】UDP服務(wù)recvfrom函數(shù)設(shè)置非阻塞

      轉(zhuǎn)自:https://blog.csdn.net/daiyudong2020/article/details/70039409

      基本概念:
      其實UDP的非阻塞也可以理解成和TCP是一樣的,都是通過socket的屬性去做。
      方法一:通過fcntl函數(shù)將套接字設(shè)置為非阻塞模式。
      方法二:通過套接字選項SO_RECVTIMEO設(shè)置超時。

      方法一源碼,編譯:g++ udp_server.cpp -o server

      #include <stdio.h>
      #include <sys/types.h>
      #include <sys/socket.h>
      #include <errno.h>
      #include <strings.h>
      #include <stdlib.h>
      #include <netinet/in.h>
      #include <arpa/inet.h>
      #include <fcntl.h>
      #include <unistd.h>
      
      void Perror(const char *s)
      {
          perror(s);
          exit(EXIT_FAILURE);
      }
      
      //設(shè)置非阻塞
      static void setnonblocking(int sockfd)
      {
          int flag = fcntl(sockfd, F_GETFL, 0);
          if (flag < 0) 
          {
              Perror("fcntl F_GETFL fail");
              return;
          }
          if (fcntl(sockfd, F_SETFL, flag | O_NONBLOCK) < 0) 
          {
              Perror("fcntl F_SETFL fail");
          }
      } 
      
      int main()
      {
          int sockfd;
          int port = 9527;
          struct sockaddr_in servaddr, cliaddr;
           sockfd = socket(AF_INET, SOCK_DGRAM, 0);
          if (sockfd == -1) 
          {
              Perror("socket failed:"); 
          }
          setnonblocking(sockfd);
          bzero(&servaddr, sizeof(servaddr)); 
          servaddr.sin_family = AF_INET;
          servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");
          servaddr.sin_port = htons(port);
          if (bind(sockfd, (sockaddr *)&servaddr, sizeof(servaddr)) == -1) 
          {
               Perror("bind failed:");
          }
          socklen_t len;
       
          for ( ; ; )
          {
              char mesg[1024] = {};
              int n = recvfrom(sockfd, mesg, 1024, 0, (sockaddr *)&cliaddr, &len); 
              sleep(1); 
              perror("recvfrom fail: ");
          } 
          return 0;
      }        

      方法二源碼,編譯:g++ udp_server.cpp -o server

      #include <stdio.h>
      #include <sys/types.h>
      #include <sys/socket.h>
      #include <errno.h>
      #include <strings.h>
      #include <stdlib.h>
      #include <netinet/in.h>
      #include <arpa/inet.h>
      #include <fcntl.h>
      #include <unistd.h>
      #include <sys/time.h> 
      
      void Perror(const char *s)
      {
          perror(s);
          exit(EXIT_FAILURE);
      }
      
      int main()
      {
          int sockfd;
          int port = 9527;
          struct sockaddr_in servaddr, cliaddr;
          sockfd = socket(AF_INET, SOCK_DGRAM, 0);
          if (sockfd == -1) 
          {
              Perror("socket failed:");
          } 
      
          // 設(shè)置超時
          struct timeval timeout;
          timeout.tv_sec = 1;//
          timeout.tv_usec = 0;//微秒
          if (setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(timeout)) == -1)
          {
              Perror("setsockopt failed:");
          }
      
          bzero(&servaddr, sizeof(servaddr));
          servaddr.sin_family = AF_INET;
          servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");
          servaddr.sin_port = htons(port);
          if (bind(sockfd, (sockaddr *)&servaddr, sizeof(servaddr)) == -1) 
          {
              Perror("bind failed:");
          }
          socklen_t len;    for ( ; ; ) 
          {
              char mesg[1024] = {}; 
              int n = recvfrom(sockfd, mesg, 1024, 0, (sockaddr *)&cliaddr, &len);
              perror("recvfrom fail: ");
           }
      
           return 0;
      } 

      原文出自:http://blog.csdn.net/daiyudong2020/article/details/70039409

      End;

      posted @ 2020-02-15 21:25  菜鳥升級  閱讀(5657)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产精品福利自产拍在线观看 | 亚洲深深色噜噜狠狠网站| 亚洲AV国产福利精品在现观看| 2022亚洲男人天堂| 无码伊人久久大杳蕉中文无码 | 久久精品国产99精品国产2021| 玩弄放荡人妻少妇系列| 中文字幕国产日韩精品| a∨变态另类天堂无码专区| 日日麻批免费40分钟无码| 在线观看国产成人AV天堂| 日韩国产成人精品视频| 日韩一区二区黄色一级片| 国产老妇伦国产熟女老妇高清| 一区二区亚洲精品国产精华液| 国产综合色在线精品| 中文字幕亚洲综合第一页| 大尺度国产一区二区视频| 竹山县| 亚洲av午夜福利精品一区二区| 精品国产福利一区二区| 性男女做视频观看网站| 天堂影院一区二区三区四区| 开心婷婷五月激情综合社区 | 亚洲欧美综合中文| 影音先锋2020色资源网| 麻豆国产va免费精品高清在线| 日韩一区二区三区日韩精品| 日本大片在线看黄a∨免费| 罗江县| 中文国产成人精品久久不卡 | 日本国产精品第一页久久| 国产综合久久99久久| 亚洲精品国产一二三区| 亚洲一区二区三区水蜜桃| 亚洲第一国产综合| 五月婷婷久久中文字幕| 日夜啪啪一区二区三区| 国产免费一区二区不卡| 免费国产午夜理论片不卡| 精品亚洲无人区一区二区|