情况是这样:
1.网络层是多种模型select,iocp等,给上层提供统一接口,跟ACE差不多,不过简单多了.
2.逻辑层做httpserver的功能,客户端是ie,firefor等
3.问题是用iocp的模型发送文件,最后一个数据包怎么确认已经发到客户端.
说明:
1.select模型没问题,select出来的writefds,最后一个数据包已经发到客户端,当然socket要适当设置.
2.IOCP触发了IO_SEND(数据有可能还在系统内存中),立即关闭socket,最后一个数据包偶尔没有发到客户端,造成接收文件不完整.
3.试过设置一个timer来关闭socket,不是好办法,因为不知道多久发送到客户端.
4.setsockopt也试过很多(具体记录一下没找到了),select可以,IOCP就是不行.
1.网络层是多种模型select,iocp等,给上层提供统一接口,跟ACE差不多,不过简单多了.
2.逻辑层做httpserver的功能,客户端是ie,firefor等
3.问题是用iocp的模型发送文件,最后一个数据包怎么确认已经发到客户端.
说明:
1.select模型没问题,select出来的writefds,最后一个数据包已经发到客户端,当然socket要适当设置.
2.IOCP触发了IO_SEND(数据有可能还在系统内存中),立即关闭socket,最后一个数据包偶尔没有发到客户端,造成接收文件不完整.
3.试过设置一个timer来关闭socket,不是好办法,因为不知道多久发送到客户端.
4.setsockopt也试过很多(具体记录一下没找到了),select可以,IOCP就是不行.