[問題] Linux Socket Programming with pthread
遇到的問題: (題意請描述清楚)
最近現在要寫一個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
04/15 18:12, 1F
→
04/15 19:43, , 2F
04/15 19:43, 2F
→
04/15 19:44, , 3F
04/15 19:44, 3F