套接字 – 套接字错误10054
我有一个C / S程序.客户端使用套接字向服务器发送文件,发送大约700k以上的数据后,客户端(在win7上)将收到套接字10054错误,这意味着连接由对等方重置.
服务器在CentOS 5.4上运行,客户端是在虚拟机中运行的windows7虚拟机.客户端和服务器通过虚拟网络接口进行通信. 每次调用socket时发送缓冲区等于4096字节 CentOS套接字配置. #sysctl -a ... net.ipv4.tcp_rmem = 4096 87380 4194304 net.ipv4.tcp_wmem = 4096 16384 4194304 net.ipv4.tcp_mem = 196608 262144 393216 net.ipv4.tcp_dsack = 1 net.ipv4.tcp_ecn = 0 net.ipv4.tcp_reordering = 3 net.ipv4.tcp_fack = 1 我不太明白套接字缓冲区配置意味着什么,如果这会导致接收不完整的结果问题? 解决方法
这几乎肯定是代码中的一个错误.最有可能的是,一方认为另一方已超时,因此异常关闭连接.这种情况最常见的方式是你调用一个接收函数来获取数据,但实际上你已经获得了那些数据并且没有意识到这一点.因此,您正在等待已收到的数据,从而超时.
例如: 1)客户端发送消息. 2)客户端发送另一条消息. 3)服务器读取两条消息,但认为它只有一条,发送一个确认. 4)客户端收到确认,等待第二次确认哪个服务器永远不会发送. 5)服务器等待它实际已经收到的第二条消息. 现在服务器正在等待客户端,客户端正在等待服务器.服务器编码错误,并没有意识到它实际上一次收到两条消息. TCP不保留消息边界. 如果你告诉我有关你的协议的更多信息,我可以更详细地告诉你出了什么问题.什么构成了信息?哪一方发送的时间?有没有确认?等等. 但简短的版本是每一方都可能在等待另一方. 最有可能的是,对等体重置连接是一种症状.您的问题发生,一方面超时并中止连接.这导致另一方重置连接,因为另一方中止了连接. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- mongodbwindows安装过程附带安装包百度云
- windows-server-2003 – 远程桌面问题
- Windows 8上的Python 3.3上的NumPy
- windows-xp – Windows XP中的任务计划程序是否足够可靠,可
- windows – 如何向DHCP服务器添加另一个地址范围
- Windows上的Java堆栈跟踪
- windows – 为什么我的一些客户在短时间内失去了HTTP连接?
- .net – 没有足够的存储空间来完成此操作 – 程序存储内存?
- windows-server-2008-r2 – RDC主机速度快,虚拟机速度慢(Hy
- windows-8 – Windows 8商店appId有哪些规则?它们是否在版