2014-07-09 9 views
2

같은 InputStream는 클라이언트와 서버 모두에 제공되는 경우 내 질문입니다. 내 서버 측에서의 InputStream

내가 가진 :

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

클라이언트에 대한 (멀티 스레드이다) 내가 가진 :

HttpURLConnection.getInputStream(); 

지금은 둘 다 동시에 발생 해, InputStream를 읽어 발생할 수 데이터 손상

실제로 내 서버가 NANOHttpd 서버가 클라이언트 내 implementation.Upto 10 ~ 12는 요청, 응답이 괜찮 실행하지만, 그 후 클라이언트 읽을 데이터가 비어 있으므로 서버의 inputstream.available() = 0. 위의 지정된 문제 일 수 있습니다.

답변

1

아니요, 클라이언트의 InputStream은 서버의 OutputStream에서 데이터를받으며 그 반대의 경우도 마찬가지입니다. 그것이 모든 점입니다. 각 쪽은 다른 쪽에서 보낸 데이터를받습니다.

+1

u는 서버가 InputStream로부터 클라이언트로 데이터를 읽는 경우하는 멀티 스레드 (다른 스레드)임을 명확히 주시겠습니까 클라이언트는 getInputStream을 수행하고 서버가 데이터가 InputStream..will 읽고 정확히 같은 시간을의 InputStream를 읽고 부패..? –

+0

@ManasL : 아니요, 클라이언트가 서버의 출력에서 ​​읽을 것이고 서버가 클라이언트의 출력에서 ​​읽을 것이기 때문입니다. 소켓이 클라이언트에서 서버로, 서버에서 클라이언트로 각각 하나씩 두 개의 독립적 인 단방향 데이터 스트림을 갖는 것으로 생각하십시오. (낮은 수준에서 나는 그것들이 독립적이라는 것은 의심 스럽지만, 그것들을 높은 수준에서 독립적이라고 생각할 수 있습니다.) –

+0

그들은 같은 소켓이 양면에 접근 할 수 있다는 점에서 상호 의존적입니다. 종료 또는 재설정은 둘 다에 영향을줍니다. 그 외에도, 적어도 양측은 미디어 액세스와 통신 사업자 및 충돌에 이르기까지는 매우 관련이 없습니다. – EJP