[問題] Linux Socket Programming with pthread

看板C_and_CPP作者 (我不知道)時間14年前 (2010/04/15 17:39), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) 最近現在要寫一個socket TCP連線的程式,程式(B)可以有server & client 的功能 也可以多方連入,所以我用pthread來寫整個程式,連線過程都沒什麼問題,只是程式執 行起來偶爾會有不穩定的情況,也就是停住在recv or send的地方。 [連線概況] B / | \ / | \ B B C /|\ /| C C CC C //大致程式架構 { ... accept () ; //接收到 (C)連線 <-- lock recev(); //得到訊息,用來判斷是A or B or C 連入 if(A){ //建立pthread 保持連線 ... } else if(B){ //建立pthread 保持連線 ... } else if(C){ //建立pthread 保持連線 ... } } lock的地方是當接受到連線會先lock住accept,等到建立pthrread後解開lock 再讓其他人進來,否則同時間多人連入會造成程式整個停住的狀態 但是遇到的問題是有時候在連線時,會停在交換訊息時,似乎是一方丟出來了, 但是另一邊還在等待,並沒有收到。 想請問這會是網路問題(分別在多台電腦),還是說我程式架構有問題 或是有什麼方式可以讓我的程式更為穩定,不要停在就死了, 而且可以應付大量的連線??? 或者只能寫入有timeout處理的功能?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.85.68

04/15 18:12, , 1F
用non-blocking socket,
04/15 18:12, 1F

04/15 19:43, , 2F
如果不考慮使用non-blocking?! 因為想要每個連線都可以確
04/15 19:43, 2F

04/15 19:44, , 3F
保成功~否則應該有後續處理
04/15 19:44, 3F
文章代碼(AID): #1Bnjx1D2 (C_and_CPP)