[問題] socket client不接收會有問題嗎?

看板C_and_CPP作者 (Penpineapple-applepen)時間7年前 (2017/02/13 00:10), 編輯推噓2(2014)
留言16則, 6人參與, 最新討論串1/1
我有一個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

02/13 01:24, , 1F
如果 client 端離線的話 不是會收到 EOF 嗎 @@
02/13 01:24, 1F

02/13 07:22, , 2F
不用送
02/13 07:22, 2F

02/13 10:10, , 3F
如果client斷線 server去read()會馬上傳回0
02/13 10:10, 3F

02/13 10:19, , 4F
除非是 UDP 才需要去詢問
02/13 10:19, 4F

02/13 14:56, , 5F
但是若是有100個client端連到server,
02/13 14:56, 5F

02/13 14:57, , 6F
不就要開100個執行緒去接收client端訊息
02/13 14:57, 6F

02/13 15:04, , 7F
因為我是使用阻斷式的,沒用過non-block的方式Q_Q
02/13 15:04, 7F

02/13 15:23, , 8F
加心跳自動斷線(?
02/13 15:23, 8F

02/13 15:29, , 9F
不需要用 non-blocking 也可以,去詢問哪個 socket 有資
02/13 15:29, 9F

02/13 15:31, , 10F
料或狀態傳進來再讀即可,select() 或 WinSock 的對應
02/13 15:31, 10F

02/13 15:32, , 11F
函式都可以做到。
02/13 15:32, 11F

02/13 15:32, , 12F
如果你的server連收資料都辦不到,後續功能根本沒辦法做
02/13 15:32, 12F

02/13 15:41, , 13F
使用 select() 就不用開那麼多 thread
02/13 15:41, 13F

02/13 16:02, , 14F
select()可詢問,知道那個client有資料進來呀~多謝
02/13 16:02, 14F

02/13 16:04, , 15F
FD_SET
02/13 16:04, 15F

02/13 18:30, , 16F
感恩,有找到範例code,再自己來試,thanks
02/13 18:30, 16F
文章代碼(AID): #1Oe8ZquB (C_and_CPP)