我正在編寫一個C網絡服務器,它將兩個客戶端配對在一起,並允許它們互相發送消息。線程服務器,在客戶端之間發送消息
目前,每個客戶端都有自己的線程在服務器和線程中我有一個循環,基本上是while((numBytesRead = read(fd, buffer, 1024)) > 0)
。這工作正常,我能夠接收消息,然後將它們回顯給客戶端。
我的問題是,雖然我不知道通過服務器將消息從一個客戶端傳輸到另一個客戶端的最佳方式。
我認爲我最大的問題是read()
塊,所以我不能發送消息到客戶端,直到客戶端發送一些文本到服務器,以便讀停止阻止。
有沒有辦法解決這個問題?我最初的想法是讓一個線程從客戶端讀取,一個寫入客戶端,但如果讀取在一個線程中被阻塞,然後我嘗試寫入相同的文件描述符,那麼這不會導致問題?
感謝任何幫助! :)
相關:http://stackoverflow.com/questions/4675824/how-to-implement-a-full-duplex-channel-over-tcp-with-a-single-thread – cmcginty 2011-05-30 07:28:28