作者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/m.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