0
我有用C++編寫的基本上是「聊天程序」的這個雙面(客戶端和服務器)程序。沒有多線程的C++套接字不同步/並行代碼
所以一方向另一方發送數據給另一方。 我正在使用C-Sockets(TCP/SOCK_STREAM)。
所以我的問題是,雖然服務器正在等待數據(「recv()」)它不能發送數據本身,因爲接收隊列是無限的,據我的經驗顯示。
我已經想到了兩種方法來解決這個問題,但我不知道它的價值的時間。因爲可能有一個簡單的解決方案,我太笨了。
- 使它成爲一個6面連接,這意味着我有一個「物理服務器」,我的服務器在四個實例中運行,每個客戶端(發送和接收)兩次。所以如果一臺服務器接收到數據,它將數據存儲在一個文件中,另一臺客戶端的發送服務器讀出併發送它。相反的工作方式。
由於這種解決方案聽起來相當低劣,我可能不會去用它。
- 使用多線程。這是我聽說過的純癌症使用,你不應該使用它,除非你必須使用。
所以我的問題是,我有什麼打算?或者有可能是一個簡單的解決方案?
考慮在支持它的平臺上使用'epoll()'而不是'select()'。 –
@RemyLebeau:你說得對。實際上,我不直接使用它們中的任何一種,而更喜歡Boost.Asio等跨平臺高級解決方案 –