如果connect()失败,则继续执行connect(),如果accept()失败,则接受()
问题描述:
在tcp客户端程序中使用connect()或在tcp服务器程序中接受() 许多可能的异常发生 例如,TCP SYN或TCP SYN/ACK丢失或一些其他错误如果connect()失败,则继续执行connect(),如果accept()失败,则接受()
(顺便说一句,我想知道,如果TCP SYN是地段,将连接()重新发送TCP SYN或只是产生一个错误?)
后容易源代码等
if(connect()<0){
...
exit(1);
}
或
if (accept()<)){
...
exit(1);
}
但是,如果我想尝试连接()或再次接受(), 是有可能或没有? 像
while(connect()<0){
continue;
}
或
while(accept()<0){
continue;
}
将这样的交易产生不可接受的后果?
此外send()和recv() 怎么样谢谢!
答
一般一旦accept
或connect
失败,它们将总是失败,所以你的while循环在失败时只是无限循环。有一些例外情况(非阻塞套接字在EINPROGRESS或EAGAIN中失效),但通常当出现错误时,您需要检查错误代码并执行相应的操作,例如关闭套接字并打开一个新套接字。
优雅与它无关。问题是,你的功能要求是什么? – EJP 2013-05-01 22:48:57