大家好,又见面了,我是你们的朋友全栈君。
今天再测试socket的时候,发现一个很奇怪的问题,就是客户端再connect的时候第一次connect总是会返回-1,errno是115,往往第二次连接就可以成功了。但是对于服务端来说,第一次连接已经成功返回了。后来想想可能跟自己的设置socket是非阻塞的有关系,后来吧socket设置成阻塞的,问题确实就没有了。
后来有反复尝试了非阻塞的。我先把服务器关闭,让客户端连接,可以发现从打出来的errno中发现115和111一组,循环出现。
两种方案
1)先设置socket为阻塞,待connect连接成功后改成非阻塞
2)connect返回115时,需要判断socket是否可写,如果时可写的话则连接成功
通过select 或者poll判断可写https://blog.csdn.net/saspss/article/details/8487678
3)个人实验,第一次connect返回EINPROGRESS可再次connect,如果没问题就证明成功
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/160541.html原文链接:https://javaforall.cn