2014-07-09 59 views
2

我的問題是如果同樣的InputStream提供給客戶端和服務器。服務器和客戶端的InputStream

在我的服務器端我有:

final socket finalAccept=myServerSocket.accept(); 
finalAccept.getInputStream(); 

客戶端(這是多線程),我有:

HttpURLConnection.getInputStream(); 

現在可以這一點他們兩個同時讀取造成的InputStream數據損壞

其實我的服務器是NANOHttpd服務器,客戶端是我的實現。使用10-12運行請求,響應沒問題,但之後客戶端讀取的數據是空,服務器的inputstream.available()= 0.也可以是以上指定的問題

回答

1

不,客戶端的InputStream接收來自服務器的OutputStream的數據,反之亦然。這就是整個觀點 - 每一方都接收從另一方發送的數據。

+1

請你澄清一下,如果服務器正在從InputStream中讀取數據,而且客戶端是multiThreaded,(另一個線程)客戶端執行getInputStream,並且讀取InputStream的時間與服務器讀取InputStream時的時間完全一樣。將會有數據腐敗..? –

+0

@ManasL:不,因爲客戶端將從服務器的輸出中讀取數據,並且服務器將從客戶端的輸出中讀取數據。將套接字想象成具有兩個獨立的單向數據流:一個從客戶端到服務器,另一個從服務器到客戶端。 (在低層次,我懷疑他們*獨立,但你可以認爲他們是高層獨立的)。 –

+0

他們只是相互依賴的,因爲同一個套接字可以訪問雙方和關閉或重置影響他們兩個。除此之外,雙方確實是毫不相干的,至少在你進入媒體接入和運營商和碰撞之前。 – EJP