使用IOCP中转大文件的有关问题,为什么服务器只响应读操作,而最后才响应写完成操作

使用IOCP中转大文件的问题,为什么服务器只响应读操作,而最后才响应写完成操作。
我用iocp作为服务器中转大文件,服务器在公网上,在传输的过程中,读写都是正常的,但就是写完成操作不能及时返回,以至于资源没法回收循环使用,只有文件转发完成以后才返回大量的写完成操作,导致了我读的时候不停的新开辟空间。。。而我在局域网测试的时候写完成操作却能被及时的接受并处理不会出现公网的问题。
我的客户端文件收发都是循环发送和接受的,有没有高人曾经遇到过这种问题的??
急啊。。。。

------解决方案--------------------
to toxyboy
这个需要一点技巧,我以前做过代理电信和网通这类的代理软件。
比如a-> s-> b
你需要判断一下,a-> s已经有多少包,要有一个限,当超标时,就不需要post read.这样,当s-> b转发完成了,再让s post to a read.这样,a可以继续发给s.
这样就可以了。
------解决方案--------------------

------解决方案--------------------
一个连接一个未决的写操作就差不多了吧?
------解决方案--------------------
你查看一下你系统在这种情况下使用了多少未分页内存。系统资源是有限的,特别在这里面系统未分页内存,在32位Windows系统当中最理想的状况下最高也就只有256MB.不过很奇怪,我从来没有用到过这么高,反倒是前几天看到倚天的一个股票数据源接收程序占用了两百五十多兆,很奇怪的是,这个时候几乎所有的网络服务都无法进行,但是Windows的远程桌面还能连接上去进行管理。
------解决方案--------------------
一次投递N个WSASend不会出问题吗? 很想看看楼主处理写完成操作的代码
------解决方案--------------------
有些转发是需要先解析数据报的 如类似代理的
------解决方案--------------------
帮顶
------解决方案--------------------
一次投递N个WSASend 会出现乱序的情况,比较麻烦。但效率高些吧。IOCP 主要用在
大量用户情况下吧。一般情况,可以不用IOCP毕竟过于复杂了。
------解决方案--------------------
太多WSASend()处于Pending状态.一次性发送这么多WSASend()绝对有可能用尽系统未分页内存,这种情况最好状态是任何winsock的操作都会返回WSAENOBUFS错误;最坏的情况是系统会崩溃.你要制定每次最多可以递送的WSASend()操作.
------解决方案--------------------
to toxyboy 
这个需要一点技巧,我以前做过代理电信和网通这类的代理软件。 
比如a- >s- >b 
你需要判断一下,a- >s已经有多少包,要有一个限,当超标时,就不需要post read.这样,当s- >b转发完成了,再让s post to a read.这样,a可以继续发给s. 
这样就可以了。

-----------------------------

我也在做這個,非常感謝你提供的資料。Thanks.


------解决方案--------------------
学习学习 向高手学习
------解决方案--------------------
markmark
------解决方案--------------------
mark