怎样让客户端SOCKET一直处于接收状态?

pstone2002 2002-06-17 03:38:18
我现在想实现让客户端SOCKET一直处于接收状态,即服务器发送一个命令过来,它就能监听到并响应它,是不是要做一个无限循环,让SOCKET停留在监听状态?你们平时碰到这样的需求时是怎样做的。
...全文
272 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
0313700000 2002-06-17
  • 打赏
  • 举报
回复
这个你不用关心,服务器发送来的数据是到网卡缓存,自然ONRECEIVE()就被触发了
pstone2002 2002-06-17
  • 打赏
  • 举报
回复
我在这里重载CSOCK的ONRECEIVE()是不是就能解决上面的问题???
spidertan 2002-06-17
  • 打赏
  • 举报
回复
好象微软上有一篇文章讲及时消息的,并且还有源码,你去查找一下!
pstone2002 2002-06-17
  • 打赏
  • 举报
回复
我意思是客户端这方要一直监听服务器方有没有什么命令过来,这里需要的大多数是这种单方向的通信,而服务器不需要老是监听客户方有没有连接情况,有的话就去处理。
我用的是存档套接字的模式,即服务器往CArchive里存一个命令字符时,客户方怎么能马上就自动产生一个消息,去读这个新存入的命令?
zj510 2002-06-17
  • 打赏
  • 举报
回复
用网络消息处理函数吧。
在ONRECEIVE()函数里接收就可以了。
bonze2002 2002-06-17
  • 打赏
  • 举报
回复
看你用什么方式了,
tcp方式. connect后可用循环recv
udp方式. 那就要建立一个port,然后recvfrom在这个socket上.
hansonhx 2002-06-17
  • 打赏
  • 举报
回复
就是守侯进程如果有消息过来就创建一个线程去处理消息,该进程一直在监听。
while( 1 )
{
if( ( hConnect = accept( hListen,
( struct sockaddr*)&saSrvAddr,
&nSrvAddrLength ) ) < 0 )
{
perror( "accept" );
writeLogFile(MODULE_Name, "socket", "accept error" );
continue;
}

if( read( hConnect, strQueryAskBuf, BUFSIZ ) <= 0 )
{
perror( "read socket" );
writeLogFile( MODULE_Name, "socket", "read error" );
close( hConnect );
continue;
}

hisDataService( hConnect, strQueryAskBuf );

close( hConnect );

}
有点乱,大概就是这样的
Bind 2002-06-17
  • 打赏
  • 举报
回复
只要在使用SELECT时有FD_READ参数,就可以了。
duankuanjun 2002-06-17
  • 打赏
  • 举报
回复
当然要做一个循环了,一直在监听!

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧