作者popen (Penpineapple-applepen)
看板C_and_CPP
标题[问题] socket client不接收会有问题吗?
时间Mon Feb 13 00:10:25 2017
我有一个server, 给很多个client端连到server
在server上我每10秒送给线上的所有client端1个讯息,
只是为了检查client端是否离线,
如果离线,server送讯息就会回传socket_error,就知道他断线了
在client端假如都不要接收讯息,client端会有问题吗?
因为server每10秒送1笔给它,不会停,client不接收讯息会爆掉吗?
--
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.137.146.17
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1486915828.A.E0B.html
1F:→ Hazukashiine: 如果 client 端离线的话 不是会收到 EOF 吗 @@ 02/13 01:24
2F:推 johnpage: 不用送 02/13 07:22
3F:推 Qbsuran: 如果client断线 server去read()会马上传回0 02/13 10:10
4F:→ Hazukashiine: 除非是 UDP 才需要去询问 02/13 10:19
5F:→ popen: 但是若是有100个client端连到server, 02/13 14:56
6F:→ popen: 不就要开100个执行绪去接收client端讯息 02/13 14:57
7F:→ popen: 因为我是使用阻断式的,没用过non-block的方式Q_Q 02/13 15:04
8F:→ TobyH4cker: 加心跳自动断线(? 02/13 15:23
9F:→ Schottky: 不需要用 non-blocking 也可以,去询问哪个 socket 有资 02/13 15:29
10F:→ Schottky: 料或状态传进来再读即可,select() 或 WinSock 的对应 02/13 15:31
11F:→ Schottky: 函式都可以做到。 02/13 15:32
12F:→ Schottky: 如果你的server连收资料都办不到,後续功能根本没办法做 02/13 15:32
13F:→ Hazukashiine: 使用 select() 就不用开那麽多 thread 02/13 15:41
14F:→ popen: select()可询问,知道那个client有资料进来呀~多谢 02/13 16:02
15F:→ Hazukashiine: FD_SET 02/13 16:04
16F:→ popen: 感恩,有找到范例code,再自己来试,thanks 02/13 18:30