SinnerA / spserver

Automatically exported from code.google.com/p/spserver
Other
0 stars 0 forks source link

关于WSASend 0字节的一个疑问 #37

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
我在自己的代码里测试过WSASend 0字节。
若这个 socket的发送缓冲满了。 那么投递WSASend 
0字节,还是会立即的收到的!!!

这样就存在问题了! 
实际上他不可写,但是收到的是可写,那么???当你send的�
��候,那么他会返回-1,错误为WSAEWOULDBLOCK

请问下发送0字节如何可以作为事件通知啊?我目前想实现此�
��果。

多谢!

Original issue reported on code.google.com by lci...@gmail.com on 5 Oct 2010 at 7:14

GoogleCodeExporter commented 9 years ago
spserver里面IO线程是单线程并且和GetQueuedCompletionStatus在用一个
线程里哦.

Original comment by xChenJun on 30 Nov 2010 at 3:39

GoogleCodeExporter commented 9 years ago
>>若这个 socket的发送缓冲满了。 那么投递WSASend 
0字节,还是会立即的收到的!!!

根据 MSDN 的解释,如果缓冲满了,投递 WSASend 0 
字节,应该也不会返回可写的。

>>spserver里面IO线程是单线程并且和GetQueuedCompletionStatus在用一�
��线程里哦.

是的,使用的同一个线程。GQCS 就是为了处理 IO 
,把收到的包放进队列,驱动线程池处理业务;线程池处理��
�成之后,把结果放到另外一个队列,再通过 GQCS 发送出去。

Original comment by stephen....@gmail.com on 19 Mar 2011 at 3:57

GoogleCodeExporter commented 9 years ago

Original comment by stephen....@gmail.com on 19 Mar 2011 at 3:58