networking - 如果 connect() 失败或者 accept() 失败,那么继续执行 connect() 是否优雅如果 accept() 失败?

  显示原文与译文双语对照的内容
0 0

在TCP客户端程序中使用 connect() 或者 accept() 服务器程序中的时,可能会发生 比如 。TCP SYN或者 TCP SYN/ack或者其他错误丢失或者其他错误。

( 我想说,如果 TCP SYN是大量的,那么 connect() 将重新发送 TCP SYN或者它只是产生一个错误)?

ususally源代码类似于

if(connect()<0){
.. .
 exit(1);
}

或者

if (accept()<)){
.. .
 exit(1);
}

但是,如果我想再次尝试 connect() 或者 accept(),是否可能? 像

while(connect()<0){
 continue;
}

或者

while(accept()<0){
 continue;
}

这样的处理会产生不可接受的后果?

另外,send() 和 recv() 如何 !

时间:原作者:2个回答

0 0

通常一次和 accept 或者 connect 失败,它们总是失败,所以你的while循环只是失败的无限循环。 有一些异常( 非阻塞套接字'失败'使用EINPROGRESS或者 EAGAIN ),但是一般情况下,你需要检查错误代码,并执行适当的操作,例如关闭套接字并打开新的消息。

原作者:
...