Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

如何控制socket发送数据的顺序?

7 views
Skip to first unread message

罗.比亚吉奥

unread,
Oct 28, 1999, 3:00:00 AM10/28/99
to
> [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]

0 new messages