wustguangh |分类标签:C/C++, 网络通信 2015-01-11
C++通过SOCKET发送FTP命令返回1054错误如何解决
通过SOCKET向服务器发送FTP命令,返回为空,通过WSAGetLastError()得到的错误代码是1054,请问如何解决?
Ctrl+Enter直接提交
回答(2)
wustguangh 19级 2015-01-11 09:25:21
以下来自CSDN论坛的回答:
出现10053的原因是因为在你执行这次send的时候对端已经执行过closesocket了,而发送的数据还是被成功的推入了发送缓冲区中,因此返回了0,此时你可能还没得到FIN消息,而紧接着recv这边就得到了对端关闭socket的FIN消息,因此此时需要放弃发送缓冲中的数据,异常终止连接,所以得到了10053错误:您的主机中的软件中止了一个已建立的连接。而为什么又能得到10054的错误号,原因应该在于你设置了SO_LINGER了,一但设置了它,则有一个等待时间,在该等待时间内可以处理发送缓冲区的数据,一但超时或者发送缓冲都被发送完并被确认,则服务端有可能发送RST消息而不是FIN,此时就应该得到重置错误,也就是10054。