※ 引述《gn00618777 (非常念舊)》之銘言:
: 我知道在 main(int argc, char*argv){
: }
: 可以傳外部參數進去例如 xxx.exe "參數"
: 但如果我在 main 裡面有一個無窮迴圈 while
: while 裡面我該如何獲得外面傳進來的參數呢??(假設這個無窮迴圈不能read file)
: 短時間內想不出來="=
: 謝謝指教
我把我自己伺服器用的TCP and Unix domain Socket IPC整理在github上
https://github.com/hn12404988/Neural_Socket
這個專案的目的是「輕量,高效,穩定」的IPC,所以選擇TCP socket 和 Unix Domain
另外目前只有在Linux上測試而已,OSX我猜應該沒問題,windows可能就要改寫一些地方
server特色:
每個connection有自己的thread獨立運作,意思就是,一個server可以被好幾個client連接
每個thread接收自己的訊息,不會在開thread處理,所以處理完這個訊息回覆後,才會處理
下一個進來的訊息,如果connection被client關掉或是不明原因中斷連線,server會自己回收
掉那個thread
client特色:
一個client可以同時跟好幾個server保持連線,需要設定一個最大連線數,如果滿了之後,
又有新的server要連線,client會關掉最少用的連線,然後加入新的。
除了傳統的「傳送然後接收」,還有「射後不理」,就是client發送訊息後,就開一個新的
thread自己去接收不重要的回覆,不會影響main thread運作。
「射後不理」不用擔心如果server處理太慢,或是client射太快,server有可能一次把兩次
的訊息一次讀取進去,因為client如果知道上一個「射後不理」還沒收到server的回傳
client會把新的訊息先存起來,等到上一個回來了,就會把訊息在馬上送出去
Note:
可以看得出來,server不管怎樣一定要回傳訊息,不然會拖慢到client的速度,雖然最終
client都會放棄沒有訊息回傳的溝通,但會嚴重影響效能。
其他細節請看example檔案,自己compile跑看看,如果有問題請在跟我說,或github上issue