我创建了一个接收套接字,使用 nanomsg 库并尝试发送nn_recv()
消息,如下代码所示:
recv_bytes = nn_recv ( socket_id, &buf, NN_MSG, 0 );
当recv_bytes
< 0 时,我执行以下操作:
if ( recv_bytes <= 0) {
struct nn_polld pfd[1] ;
pfd[0].fd = socket_id;
pfd[0].events = NN_POLLIN;
rc = nn_poll ( pfd, 1, 2000 );
if ( rc == 0 ) {
printf ( "Timeout!" );
// exit (1);
}
if ( rc == -1 ) {
printf ( "Error!" );
// exit (1);
}
if ( pfd [0].revents & NN_POLLIN ) {
printf ( "Message can be received from s1!" );
// exit (1);
}
}
我根本看不到Error!
文字,我总是看到其他打印,但在我重新绑定到套接字之前没有收到任何消息。
我想知道是否有任何方法可以让我通过错误NN_POLL
并再次重新连接/绑定。问题是我不想在计时器上随机做。
请建议。
当一个终端站关闭时,我无法接收来自终端的消息。如果我知道 nanomsg 套接字已经坏了,那么我可以重新绑定但没有收到任何错误,同时也没有收到来自其他终端站的消息。