> [1;36m==> Nicky_Sun(无怨无悔) 说道: [37;40m [0m
1.通讯的有序无序是由具体的应用决定的.如果你写的
是一个对等通讯程序,如Chat,就没有必要实现一问一答
的发送.敲得快的一方自然就Send的多一些.但如果你
写的是主从式通讯程序,则一般Server是绝对被动的,
它不断分析Client的请求,并产生应答,这是一问一答的方式.
2.OnReceive()的发生时间是在socket的接收缓冲区
里有数据可读的时候,OnSend()的发生时间是在对应socket
"写准备好"时.所以在主从式通讯时,Client仍然和Chat Client
一样,为OnReceive()和OnSend()各写一个处理块即可.但在
Server端,你没有必要在每次OnSend()里都有动作.可以这样:
(单线程)
CMySocket::OnReceive()
{
m_bNewRequest=TRUE;
Receive(.....);
if(Analyse(....))
m_bGoodRequest=TRUE;
else
m_bGoodRequest=FALSE;
}
CMySocket::OnSend()
{
if(!m_bNewRequest || !m_bGoodRequest)
return;
PrepareBuffer(....);
Send(...);
m_bNewRequest=FALSE;
}
--
※ 来源: 中国科大BBS站 [bbs.ustc.edu.cn]