求分析思路, 服务器给客户端传文件无反应,该如何解决
求分析思路, 服务器给客户端传文件无反应
现采用IOCP方式做了一个服务端和一个客户端模块, 他们之间每5秒钟传输一个100K文件. 服务端采用线性列表给客户端传文件, 文件传输过程分为三步: 1. 通知客户端有文件要传输; 2. 传输文件; 3. 客户端收到文件后回复服务器接收完成. 服务端和客户端在局域网内. 正常情况下, 每秒可以传输大概30张100K左右的图片.
现发生问题是在长时间运行后, 客户端不接收文件了. 查看到服务端发送文件代码, 文件一直在传输, 而且都返回成功. 但客户端方面没有接收到相关的网络数据.
这种情况可通是由什么原因导致的? 猜想是客户端网络缓冲区溢出导致的, 但理论上来说网络传输处理不应该阻塞, 逻辑处理与网络IO处理是分开的.
用wireshark查看如下所示, 好像只有一个消息头发送, 后面的文件传输就没有了.

求各位大大帮忙分析了, 谢谢.
------解决方案--------------------
是不是服务端代码有问题,没有发送成功
------解决方案--------------------
到出问题的时候客户端抓包只抓到了消息头,没抓到数据内容?
服务端那边抓包看下发出数据了吗?
------解决方案--------------------
估计是内存泄漏,运行一段时间后,IOCP得不到内存了
------解决方案--------------------
发送是成功的。说明数据包发送到主机了。
只是你处理的时候没有处理到。
肯定是接受处理出问题了。
------解决方案--------------------
使用wireshark抓包。
------解决方案--------------------
写一个简单的不用IOCP方式的程序来做调试。看看问题出现在哪一端。
自己写IOCP还不如直接用boost.asio.
现采用IOCP方式做了一个服务端和一个客户端模块, 他们之间每5秒钟传输一个100K文件. 服务端采用线性列表给客户端传文件, 文件传输过程分为三步: 1. 通知客户端有文件要传输; 2. 传输文件; 3. 客户端收到文件后回复服务器接收完成. 服务端和客户端在局域网内. 正常情况下, 每秒可以传输大概30张100K左右的图片.
现发生问题是在长时间运行后, 客户端不接收文件了. 查看到服务端发送文件代码, 文件一直在传输, 而且都返回成功. 但客户端方面没有接收到相关的网络数据.
这种情况可通是由什么原因导致的? 猜想是客户端网络缓冲区溢出导致的, 但理论上来说网络传输处理不应该阻塞, 逻辑处理与网络IO处理是分开的.
用wireshark查看如下所示, 好像只有一个消息头发送, 后面的文件传输就没有了.
求各位大大帮忙分析了, 谢谢.
------解决方案--------------------
是不是服务端代码有问题,没有发送成功
------解决方案--------------------
到出问题的时候客户端抓包只抓到了消息头,没抓到数据内容?
服务端那边抓包看下发出数据了吗?
------解决方案--------------------
估计是内存泄漏,运行一段时间后,IOCP得不到内存了
------解决方案--------------------
发送是成功的。说明数据包发送到主机了。
只是你处理的时候没有处理到。
肯定是接受处理出问题了。
------解决方案--------------------
使用wireshark抓包。
------解决方案--------------------
写一个简单的不用IOCP方式的程序来做调试。看看问题出现在哪一端。
自己写IOCP还不如直接用boost.asio.