2011-08-10 3 views
1

사람들은 그렇게 경험이 없다. 내가이 개 프로그램을 서버에 대한 하나 (내 PC)와 하나의 클라이언트 (다른 ​​PC)에 대한 이 서버가/수신Java - 라이브 소켓 연결을 유지하는 방법

이 허용하는 설정을입니다 그래서

은> 클라이언트가 연결> 서버에 명령을 확인 전송 클라이언트> 클라이언트가 실행됩니다.

하고 연결이 끊어하지만 필요에 따라 서버가 명령을 보내는 유지할 수 있도록 내가 연결 상태를 유지하기 위해 클라이언트를 필요로 그 후, 그것을 이잖아.

어떻게하면됩니까?

그냥 물어 봐도 더 많은 정보를 제공 할 수 있습니다! 모든 도움을 주신 분들께 감사드립니다.() 반환을 받아, 그 소켓이 다음 종료되지 않는 한 연결이 열려있는 경우

+0

이것은 왜 단절 되는가라는 의문을 제기합니다. – mre

+0

열려있는 소켓에 대한 참조를 유지하는 한 연결은 열려 있어야합니다. (네트워크 장애를 막는 것). – jjnguy

답변

8

서버는 소켓을 받게됩니다. 그런 다음 클라이언트가 연결을 닫을 때까지 클라이언트는 read/execute-command 루프에서 실행됩니다. 필요한 경우 세부 정보를 제공 할 수 있습니다.

+0

예. 연결을 유지하기 위해 다른 스레드에서 일종의 루프를 실행하려고 시도했지만 그 스레드가 루핑 중입니다. 명령을 읽지 않아도됩니다. – Mark

+0

나는 alittle bit에서 도움이되는 코드를 제공 할 것이다. 내가 너와 대답 할 때까지 기다려라. – Mark

+0

클라이언트 측의 루프는 연결을 유지하지 않으므로 소켓에서 /로 읽고 쓰는 것입니다. java의 serversocket/socket 클래스는 TCP/IP 소켓이므로 연결 해제 할 때까지 연결을 끊지 않을 것입니다. –

0

Java sockets 시작하는 몇 가지 공식 사례가있다. 자바 이후로,이 설정을하는 것은 매우 쉽습니다.

Kevin은 이미 말했듯이, 일부 열린 포트에서 ServerSocket을 열어 놓을 것입니다. 그런 다음 accept()를 호출하면 클라이언트가 ServerSocket과 동일한 포트에있는 Socket에 연결할 때 반환됩니다. 또한

, 클라이언트 프로그램이 호스트에서 다른 컴퓨터에서 연결하려는 경우 지정된 호스트에주의해야합니다. 호스트를 "null"또는 "127.0.0.1"로 지정하면 루프백 인터페이스에 문제가 발생할 수 있습니다.

관련 문제