Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何在没有while循环的情况下使用nanomsg调查体系结构?_C_Sockets_Ipc_Nanomsg - Fatal编程技术网

C 如何在没有while循环的情况下使用nanomsg调查体系结构?

C 如何在没有while循环的情况下使用nanomsg调查体系结构?,c,sockets,ipc,nanomsg,C,Sockets,Ipc,Nanomsg,我正在研究nanomsg对IPC的使用,并希望使用调查-描述的原型体系结构。在本文中,进程作为客户端和服务器运行,并交换数据。现在服务器有以下代码(也在提供的链接中列出): 由于插座类型为NN\u explorer,因此while-循环不会在NN\u recv处等待。对于客户端,套接字类型是NN\u responder等等,而客户端中的循环在NN\u recv处等待 现在,由于这个while循环连续无限地运行,CPU使用率上升到99%。你能告诉我有没有其他方法可以使用nanomsg在循环结束时尝

我正在研究
nanomsg
IPC
的使用,并希望使用
调查
-描述的原型体系结构。
在本文中,进程作为客户端和服务器运行,并交换数据。现在服务器有以下代码(也在提供的链接中列出):

由于插座类型为
NN\u explorer
,因此
while
-循环不会在
NN\u recv
处等待。对于客户端,套接字类型是
NN\u responder
等等,而客户端中的循环在
NN\u recv
处等待

现在,由于这个while循环连续无限地运行,CPU使用率上升到99%。你能告诉我有没有其他方法可以使用
nanomsg

在循环结束时尝试添加yield()调用,如果没有收到任何结果

int server (const char *url)
{
  int sock = nn_socket (AF_SP, NN_SURVEYOR);
  assert (sock >= 0);
  assert (nn_bind (sock, url) >= 0);
  sleep(1);                                              // wait for connections
  int sz_d = strlen(DATE) + 1;                           // '\0' too
  printf ("SERVER: SENDING DATE SURVEY REQUEST\n");
  int bytes = nn_send (sock, DATE, sz_d, 0);
  assert (bytes == sz_d);
  while (1)
    {
      char *buf = NULL;
      int bytes = nn_recv (sock, &buf, NN_MSG, 0);
      if (bytes == ETIMEDOUT) break;
      if (bytes >= 0)
      {
        printf ("SERVER: RECEIVED \"%s\" SURVEY RESPONSE\n", buf);
        nn_freemsg (buf);
      }
    }
  return nn_shutdown (sock, 0);
}