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。

wustguangh 19级 2015-01-11 09:24:17

这种问题很可能是由于向服务器发送了不合法的命令,导致服务器无法响应!

相关知识

相关文章更多