2011-11-26 2 views
0

내 응용 프로그램에서 포트로 바인드 된 ServerSocket을 만들었습니다. 이 응용 프로그램을 동일한 네트워크의 연결된 PC에 배포합니다. 이 포트를 사용하여 응용 프로그램이 설치된 PC에 요청을 게시 할 수 있습니다. 이제 수신자는 메시지를 수신 할 수 있지만 응답을 요청한 PC로 다시 보낼 때 입력 스트림은 메시지를 수신하지 않습니다. 그것을 할 수있는 방법이 있습니까? 나는 긴급 TCP 메시지에 대해 아무 것도 모른다. 나는 그것을 가능하게했지만 어떻게 보낼 지 모른다. 내 메시지는 기본적으로 삭제됩니까? 나는 다른 스레드에서 대답을 얻지 못한다.Java SE 소켓 입력 스트림이 응답을받지 않습니다.

+0

내가하고있는 것을보기 위해 코드 일부를 게시하십시오. – Cratylus

답변

1

통신 상태를 활성 상태로 유지하는 ClientSocket 및 ServerSocket 모두에 루프가 있어야합니다.

그렇지 않으면 클라이언트 소켓과 서버 소켓을 모든 측면 (모든 송신기 및 수신기 장치)에 구현해야합니다. 서버 소켓 A가 메시지를 받으면 응답하기 위해 자신의 장치에있는 보낸 사람의 응용 프로그램에있는 서버 소켓 B에 다시 응답하는 클라이언트 소켓이 있어야합니다.

이렇게하면 동일한 포트를 사용하는 서버 소켓이있는 모든 장치가 서로 메시지를 검색하고 보낼 수 있습니다.

물론 답장을 보내려면 발신자의 IP 주소를 유지해야합니다.

1

flush 데이터를 보내는 PC의 출력 스트림이 좋습니까?

// Send data here 
yourOutputStreamReference.flush(); 
+0

안녕하세요, 저는 그것을 제외하고 shutdowninputstream 및 shutdownoutputstream을 시도했습니다. 다른 응용 프로그램에 내 요청을 보낼 수 있지만 서버가 응답을 보내면 응답을 얻을 수 없습니다. –

+0

동일한 코드 : 내가 나에게 요청을 보낼 때 .. 서버 쪽에서 클라이언트 쪽에서 응답이 나에게 돌아온다. 장치간에 같은 일이 일어나지 않습니다 ... –

+0

알아 낸 것처럼 모든 응답은 서버 측으로 리다이렉트 된 새로운 요청으로 이루어져야합니다 .. –

관련 문제