[問題] socket 進行nonblocking的 read/write

看板C_and_CPP作者 (我不知道)時間14年前 (2010/03/28 02:31), 編輯推噓0(0012)
留言12則, 4人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) 在寫一個多client連接單一server的socket programming,有點像是聊天室的感覺 (就是A--B,任何一方輸入字串,都可以馬上傳到對方去,不會因為等待而被放在buffer中) 有先利用fcntl改變參數成nonblocking,讓他read沒東西就往下,不會停在那, 但是還是失敗,找很久發現是哪在讀取字串scanf() 的地方,不過想很久還是不知 道要怎麼避開他,想請問有什麼辦法可以解決讀取字串的方法呢?? 或是有什麼好方法可以實做出這種功能呢?! fcntl(); .. .. read(); scanf(); write(); .. .. 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Linux -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.37.160.132

03/28 02:38, , 1F
通常我是開thread 一個負責read 一個負責write
03/28 02:38, 1F

03/28 02:39, , 2F
這樣還蠻簡單的(效能上我就不太清楚了)
03/28 02:39, 2F

03/28 10:14, , 3F
linux 基本上是用 fork 去產生新的 process 去處理
03/28 10:14, 3F

03/28 14:57, , 4F
fdset?
03/28 14:57, 4F

03/28 16:36, , 5F
fork()不是分成相同的程序嗎?? read write不同要怎麼辦
03/28 16:36, 5F

03/28 20:03, , 6F
你可以根據pid來區別是哪個程序決定要做不同的事
03/28 20:03, 6F

03/28 20:05, , 7F
所以可以把讀寫的程式寫在一起,再用if分開
03/28 20:05, 7F

03/28 20:07, , 8F
不過用fork兩個程序間要溝通的話會變很麻煩?
03/28 20:07, 8F

03/28 23:21, , 9F
喔喔~~那那有建議用fork()或是pthread嗎?!
03/28 23:21, 9F

03/28 23:22, , 10F
因為我一開始是寫fork()後來改成pthread...來處理每個
03/28 23:22, 10F

03/28 23:22, , 11F
client的連線...
03/28 23:22, 11F

03/28 23:23, , 12F
另外想問如果用recv是不是可以在後面設定成nonblocking?!
03/28 23:23, 12F
文章代碼(AID): #1BhayHJn (C_and_CPP)