"If connect fails,the socket is no longer usable and must be closed. We cannot call connect again on the socket."
有谁知道上述声明背后的原因?
在我自己的实验中,我编写了一个简单的tcp客户端,它将在主机A和一个简单的tcp服务器上运行,它将在主机B上运行.tcp客户端将尝试永远连接到主机B上的tcp服务器.
所以,我在主机B上启动了服务器.从主机上拔下网络线.然后我在主机A上启动了客户端.在同一个套接字上大约9次连接尝试失败后,我只需将网络线插回服务器主机.客户端连接成功,愉快地以80K /秒的速度发送消息.
在另一个实验中,我在初始成功连接和之后几百万条消息交换后从服务器主机拔出电线.然后,几分钟后,我连接了电线,并在同一插座上恢复了消息流.
解决方法 POSIX 2001 says在信息部分:If
connect()
fails,the state of the socket is unspecifIEd. Conforming applications should close the file descriptor and create a new socket before attempting to reconnect.
因此,您引用的段落与此规范一致.它在您的机器上运行的事实并不意味着您的程序是可移植的.
总结以上是内存溢出为你收集整理的connect()失败后套接字是否无法使用?全部内容,希望文章能够帮你解决connect()失败后套接字是否无法使用?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)