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

慕萊塢森
TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
你的信息量太少,無法判斷你的問題。socket 做收發(fā)是肯定沒有問題的??隙ㄊ悄愠绦虻膯栴}。可能需要更多的代碼來判斷你的問題所在。
- 2 回答
- 0 關(guān)注
- 330 瀏覽
添加回答
舉報(bào)
0/150
提交
取消