如何模拟来自非阻塞客户端的连接以遇到EINPROGRESS错误?
我该如何从服务器上将此类错误返回给客户端(即,调整一些tcp计时器,原始套接字服务器等。)
最佳答案
当连接到localhost时,TCP总是立即连接,因此connect()
不返回EINPROGRESS
。
您可以通过“假装” connect()
返回EINPROGRESS
并等待直到客户端套接字准备好写操作(就像在EINPROGRESS
之后连接一样),在客户端中进行模拟。实际上,某些库只针对非阻塞connect()
这样做,以避免两个不同的代码路径进行立即连接和慢速连接。