关于完成端口的WSASend问题 来者有分 如果是同时给一个socket同时WSASend的情况 应该怎么处理呢谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://blog.csdn.net/wang921718/archive/2007/09/04/1772396.aspx看看这里我的BLOG,希望对你能有帮助! 拜托楼上,先看清问题再打广告。在完成端口当中对一个Socket同时发多个WSASend,如果是正常情况下,那么这些WSASend所提交的数据依序被发送出去。但是有例外情况,可能全使得其中某个或多个WSASend所发送的数据还没有发送完成就产生一个完成事件(这种情况很少出现,一般地说,只要你编码没有问题,基本上不会出现).另外就算是完成端口,它所使用的也是基础网络,而基础网络都有带宽等瓶颈,如此就有可能产生大量地未决请求,而即便是你的Socket采用了用户缓存,仍然不可避免地在系统未分页内存当中占用一定的资源,非必要的时候(比如你做的是一个高并发的服务器,所谓服务器就是为大众服务,而不是个人,所以没有必要为谁去争取如此时间)不建议对同一个Socket发起多余地WSASend,可以对其建立发送队列,一个个发送,如此就算是前面所提到的异常情况发生了,也不至于影响到数据包的顺序。另外由于系统未分页内存是有限的(Win32系统当中,最高约不到256MB),如此如果一个Socket本来发送就缓慢,还为它堆积一堆不必要的发送请求,占用大量的系统资源,显示不合理。就算是必要的情况下,也需要控制未决的发送请求量。比如你在对某个Socket提交WSASend的时候,可以增加一个计数,而等这个发送返回之后,再扣减一个计数,如此等等。 谢谢 unsigned 我还想问一下 加入在完成端口中 一个socket正在recv 而我又必须在服务器主动send一些数据给客户端那么 会影响recv么 如果同一个socket有多个recv 会引起什么问题? 处理好每一个socket,处理好每一次连接,相互关系理顺。 关于 atl 进程外服务器的疑惑 问题 用web browser控件来打开一个https页面时的问题 谁知道 DCOM 底层基于 TCP 通信的详细过程? 新手上路寻求帮助和建议 dll问题 请问怎么打开一个自己写的帮助文档(HTML 或者MHT的) Win32做一个MFC多文档的界面 ping程序的原理 50分求解一个很奇怪的问题 汗一个 , 打印的问题 VC+ADO+ACCESS 连接的问题求教
在完成端口当中对一个Socket同时发多个WSASend,如果是正常情况下,那么这些WSASend所提交的数据依序被发送出去。但是有例外情况,可能全使得其中某个或多个WSASend所发送的数据还没有发送完成就产生一个完成事件(这种情况很少出现,一般地说,只要你编码没有问题,基本上不会出现).另外就算是完成端口,它所使用的也是基础网络,而基础网络都有带宽等瓶颈,如此就有可能产生大量地未决请求,而即便是你的Socket采用了用户缓存,仍然不可避免地在系统未分页内存当中占用一定的资源,非必要的时候(比如你做的是一个高并发的服务器,所谓服务器就是为大众服务,而不是个人,所以没有必要为谁去争取如此时间)不建议对同一个Socket发起多余地WSASend,可以对其建立发送队列,一个个发送,如此就算是前面所提到的异常情况发生了,也不至于影响到数据包的顺序。另外由于系统未分页内存是有限的(Win32系统当中,最高约不到256MB),如此如果一个Socket本来发送就缓慢,还为它堆积一堆不必要的发送请求,占用大量的系统资源,显示不合理。就算是必要的情况下,也需要控制未决的发送请求量。比如你在对某个Socket提交WSASend的时候,可以增加一个计数,而等这个发送返回之后,再扣减一个计数,如此等等。
如果同一个socket有多个recv 会引起什么问题?