为什麽用MFC的Socket类得不到客户端的关闭消息呢?谢谢指教

tianxuhua 2001-08-01 08:46:26
...全文
139 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
xyzboat 2001-08-01
  • 打赏
  • 举报
回复
当然,我听一位权威人士说要有耐心的等上9个小时,可以见到结果,可我没有那个耐心.
xyzboat 2001-08-01
  • 打赏
  • 举报
回复
谁敢保证不添加应用层协议,就能无条件的发现对方断开,我就先叫他一声哥了.

IRC协议还更是在应用层搞了一个Ping和Pong机制,上chat.263.net,你要是一段时间不活动,就会认为你断开了.
xyzboat 2001-08-01
  • 打赏
  • 举报
回复
那要是发现不了对方已经断开了呢,怎么办?
五行擒拿术 2001-08-01
  • 打赏
  • 举报
回复
OnClose的消息并不是网络传输过来的,它只是一个FD_CLOSE事件,也就是说,如果你的系统发现这个socket已经断开了,就会产生一个FD_CLOSE事件。所以不管是对方Close,还是网络断开了,你都会收到OnClose;但是如果是你主动去Close()的,就不会触发这个事件了
LoveAlien 2001-08-01
  • 打赏
  • 举报
回复
只有用UDP协议才可以进行事件的响应。TCP协议是基于连接的
UDP(nSocketType=SOCK_DGRAM)
TCP(nSocketType=SOCK_STREAM)
xyzboat 2001-08-01
  • 打赏
  • 举报
回复
当然,收到了Onclose那最好了.
xyzboat 2001-08-01
  • 打赏
  • 举报
回复
所以,光靠这个消息,不足以判断对方关闭了.
xyzboat 2001-08-01
  • 打赏
  • 举报
回复
如果对方发了OnClose消息,这时网络断了,你永远别想收到.
kkk16 2001-08-01
  • 打赏
  • 举报
回复
table(天刹孤星) 说得对,你必须重载作为监听的Socket的OnClose()函数。
greenyard 2001-08-01
  • 打赏
  • 举报
回复
Create(UINT nSocketPort = 0, int nSocketType = SOCK_STREAM, long lEvent = FD_READ ¦ FD_WRITE ¦ FD_OOB ¦ FD_ACCEPT ¦ FD_CONNECT ¦ FD_CLOSE, LPCTSTR lpszSocketAddress = NULL )
有FD_CLOSE就可以收到
greenyard 2001-08-01
  • 打赏
  • 举报
回复
UINT nSocketPort = 0, int nSocketType = SOCK_STREAM, long lEvent = FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE, LPCTSTR lpszSocketAddress = NULL )
有FD_CLOSE就可以收到
五行擒拿术 2001-08-01
  • 打赏
  • 举报
回复
可以得到的,如果对方关闭了socket,你的CSocket的OnClose()就会被响应
zb_china 2001-08-01
  • 打赏
  • 举报
回复
发送接收时才能得到。

16,551

社区成员

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

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

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