看板 C_and_CPP 關於我們 聯絡資訊
我有一個server, 給很多個client端連到server 在server上我每10秒送給線上的所有client端1個訊息, 只是為了檢查client端是否離線, 如果離線,server送訊息就會回傳socket_error,就知道他斷線了 在client端假如都不要接收訊息,client端會有問題嗎? 因為server每10秒送1筆給它,不會停,client不接收訊息會爆掉嗎? -- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.137.146.17 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1486915828.A.E0B.html
Hazukashiine: 如果 client 端離線的話 不是會收到 EOF 嗎 @@ 02/13 01:24
johnpage: 不用送 02/13 07:22
Qbsuran: 如果client斷線 server去read()會馬上傳回0 02/13 10:10
Hazukashiine: 除非是 UDP 才需要去詢問 02/13 10:19
popen: 但是若是有100個client端連到server, 02/13 14:56
popen: 不就要開100個執行緒去接收client端訊息 02/13 14:57
popen: 因為我是使用阻斷式的,沒用過non-block的方式Q_Q 02/13 15:04
TobyH4cker: 加心跳自動斷線(? 02/13 15:23
Schottky: 不需要用 non-blocking 也可以,去詢問哪個 socket 有資 02/13 15:29
Schottky: 料或狀態傳進來再讀即可,select() 或 WinSock 的對應 02/13 15:31
Schottky: 函式都可以做到。 02/13 15:32
Schottky: 如果你的server連收資料都辦不到,後續功能根本沒辦法做 02/13 15:32
Hazukashiine: 使用 select() 就不用開那麼多 thread 02/13 15:41
popen: select()可詢問,知道那個client有資料進來呀~多謝 02/13 16:02
Hazukashiine: FD_SET 02/13 16:04
popen: 感恩,有找到範例code,再自己來試,thanks 02/13 18:30