在tcp客户端程序中使用connect()或在tcp服务器程序中使用accept()时 可能发生许多可能的例外 例如,TCP SYN或TCP SYN / ACK丢失或其他一些错误
(顺便说一下,我想知道,如果TCP SYN很多,会连接()重新传输TCP SYN还是只会产生错误?)
通常源代码就像
if(connect()<0){
...
exit(1);
}
或
if (accept()<)){
...
exit(1);
}
但是,如果我想再次尝试connect()或accept(), 有可能吗? 像
while(connect()<0){
continue;
}
或
while(accept()<0){
continue;
}
这样的交易会产生不可接受的后果吗?
另外,send()和recv()怎么样 谢谢!
答案 0 :(得分:0)
通常一旦accept
或connect
失败,它们将始终失败,因此你的while循环在失败时只是无限循环。有一些例外(使用EINPROGRESS或EAGAIN'失败'的非阻塞套接字),但通常在出现错误时,您需要检查错误代码并执行适当的操作,例如关闭套接字并打开新套接字。 / p>