1

当在 tcp 客户端程序中使用 connect() 或在 tcp 服务器程序中使用 accept() 时,可能会发生许多可能的异常,例如 TCP SYN 或 TCP SYN/ACK 丢失或其他一些错误

(顺便说一句,我想知道,如果 TCP SYN 很多,connect() 会重新传输 TCP SYN 还是只会产生错误?)

通常源代码就像

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

或者

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

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

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

或者

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

这样的交易会产生不可接受的后果吗?

此外,send() 和 recv() 怎么样,谢谢!

4

1 回答 1

0

通常一次和acceptconnect失败,它们总是会失败,所以你的 while 循环只是失败时的无限循环。有一些例外(非阻塞套接字会因 EINPROGRESS 或 EAGAIN 而“失败”),但通常当出现错误时,您需要检查错误代码并做一些适当的事情,例如关闭套接字并打开一个新套接字。

于 2013-05-01T21:17:50.437 回答