socket编程的同步、异步与阻塞、非阻塞示例详解之一 您所在的位置:网站首页 socket的阻塞和非阻塞 socket编程的同步、异步与阻塞、非阻塞示例详解之一

socket编程的同步、异步与阻塞、非阻塞示例详解之一

2023-03-31 09:10| 来源: 网络整理| 查看: 265

  if (argc   {     printf("Usage:%s [ip address] [any string]\n", argv[0]);     return 1;   }   *snd_buf = '\0';   strcat(snd_buf, argv[2]);   if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)   {     perror("socket:");     exit(1);   }   server_addr.sin_family = AF_INET;   server_addr.sin_port = htons(SERVPORT);   inet_pton(AF_INET, argv[1], &server_addr.sin_addr);   memset(&(server_addr.sin_zero), 0, 8);   addr_len = sizeof(struct sockaddr_in);   /* Setting socket to nonblock */   flags = fcntl(sockfd, F_GETFL, 0);   fcntl(sockfd, flags|O_NONBLOCK);   /* create the connection by socket     * means that connect "sockfd" to "server_addr"    * 同步阻塞模式     */   if (connect(sockfd, (struct sockaddr *)&server_addr, sizeof(struct sockaddr)) == -1)   {     perror("connect");     exit(1);   }   /* 同步非阻塞模式 */   while (send(sockfd, snd_buf, sizeof(snd_buf), MSG_DONTWAIT) == -1)   {     sleep(1);     printf("sleep\n");   }   printf("send:%s\n", snd_buf);   /* 同步非阻塞模式 */   while ((recvbytes = recv(sockfd, rcv_buf, MAXDATASIZE, MSG_DONTWAIT)) == -1)   {     sleep(1);     printf("sleep\n");   }   rcv_buf[recvbytes] = '\0';   printf("recv:%s\n", rcv_buf);   close(sockfd);   return 0; } 异步阻塞模式,异步非阻塞模式以及server端程序见本文的第二部分。 http://blog.chinaunix.net/uid-26000296-id-3755268.html

九三,君子终日乾乾,夕惕若,厉无咎。

【白话】九三,君子整天自强不息,晚上也不敢有丝毫的懈怠,这样即使遇到危险也会逢凶化吉。

 

《象》曰:“终日乾乾”,反复道也。

【白话】《象辞》说:“整天自强不息”,是因为要避免出现反复,不敢有丝毫大意。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有