服務端:創建了兩個線程來處理客戶端請求,一個線程用于接收連接進來的Socket,并將Socket添加到一個隊列Queue對象中;另外一個線程用于將Queue中的Socket提出來進行接收、發送操作,接收、發送操作采用異步方式。 客戶端:用連接到服務端的Socket創建一個NetworkStream的實例(NetworkStream stream = new NetworkStream(socket, true);),并將該NetworkStream的實例,包裝到一個System.IO.BufferedStream的實例中(/*用于接收*/Stream inStream = new BufferedStream(stream); /*用于發送*/Stream outStream = new BufferedStream(stream);)進行與服務端的數據收發。 然后我創建了一個連接池,初始化創建了10個服務端的連接,然后寫了一個單線程的測試程序,從連接池中將這10個連接依次取出來發送、接收數據,一切OK(將連接都還回了連接池),但當我再次從連接池取出一個連接(已用完10個創建的連接,這次是第二次取出的連接,在前面是已經使用過的)進行發送、接收數據時,測試程序無法接收到服務端的返回的數據。(不管在客戶端還是服務端,在發送/接收完數據后,我都沒有關閉連接) 從服務端的日志看,服務端是接收到了客戶端發來的數據的,并且服務端也成功將數據發送出去了,只是客戶端沒有接收到。 此問題困擾在下兩天了,望達人指教~
- 2 回答
- 0 關注
- 397 瀏覽
添加回答
舉報
0/150
提交
取消