클라이언트가 연결될 때마다 클라이언트가 연결을 끊을 때마다 다중 클라이언트/서버 응용 프로그램을 만듭니다. 내가 나에게 어떤 메시지를 인쇄 말할 것이다 어떤 조건을 설정하는 방법 때마다 서버 여기 에서 모든 클라이언트 연결이 끊어 그것은 당신이 무슨 뜻인지 분명하지 않다 어떤 도움이클라이언트가 연결을 끊을 때 서버가 응답을 멈 춥니 다
답변
을 이해할 수있을 것이다 내 서버 코드
class ServerThread implements Runnable {
public void run() {
Socket socket = null;
try {
System.out.println("server starting.......");
serverSocket = new ServerSocket(SERVERPORT);
} catch (IOException e) {
e.printStackTrace();
}
while (!Thread.currentThread().isInterrupted()) {
try {
System.out.println("Ready to accept.......");
socket = serverSocket.accept();
System.out.println(" client Connected with ip address =" +socket.getRemoteSocketAddress().toString());
CommunicationThread commThread = new CommunicationThread(socket);
new Thread(commThread).start();
} catch (IOException e) {
e.printStackTrace();
System.out.println("catch block");
}
}
}
}
class CommunicationThread implements Runnable {
private Socket clientSocket;
private BufferedReader input;
public CommunicationThread(Socket clientSocket) {
this.clientSocket = clientSocket;
try {
this.input = new BufferedReader(new InputStreamReader(this.clientSocket.getInputStream()));
} catch (IOException e) {
e.printStackTrace();
}
}
public void run() {
while (!Thread.currentThread().isInterrupted()) {
try {
String read = input.readLine();
updateConversationHandler.post(new updateUIThread(read));
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
입니다 대화가 끝났거나 (즉, 모든 것이 성공적으로 완료 되었기 때문에) 연결이 끊어 지거나 일부 네트워크 문제 (또는 클라이언트가 요청을 취소 함)로 인해 연결이 끊어졌습니다.
첫 번째 경우라면 사용중인 프로토콜 (자신 또는 http 또는 기타)이 대화가 끝났음을 확인하는 방법을 정의하는 책임이 있습니다. 그런 상황이 발생하면 소켓을 닫으십시오.
두 번째 경우에는 연결을 닫아야하는지 여부를 결정하는 알고리즘이 있어야합니다. 예를 들어, 시간 초과 또는 느린 읽기 임계 값을 구현합니다. 시간 제한 설정 방법에 대한 지침은 Socket's javadoc을 참조하십시오.
연습이나 학습을 원할 때 자신의 서버를 만드는 것이 좋지만 vert.x 또는 Wildfly의 슬림 다운 버전과 같은 기존 솔루션을 사용하는 것이 좋습니다. 예. 이러한 서버의 오버 헤드는 오늘날 매우 낮지 만 여전히 매우 강력한 네트워킹 기능을 제공합니다.
때문에 클라이언트가 끊어지면 서버가 중단됩니다 정확히 어떻게 처리 할 수 있습니까? 나는 클라이언트에서받는 모든 메시지를 설정하고있는 textview 있습니다. 하지만 클라이언트가 연결을 끊으면 루프가 계속해서 "null"로 표시되어 결국 충돌합니다. – Mohit
클라이언트와 서버 모두 네트워크 연결 문제를 처리해야합니다. 앞서 언급했듯이 Socket 클래스는이 경우를 처리 할 수있는 시간 초과를 제공합니다. 하지만 생각보다 훨씬 많은 경우가 있기 때문에 실제 서버 구현에 대한 권장 사항입니다. – jpkrohling
- 1. PHP 소켓 서버가 응답을 멈 춥니 다.
- 2. NodeJs 서버가 하나의 응답 후 응답을 멈 춥니 다.
- 3. 클라이언트가 연결을 끊을 때 서버가 소켓을 제거/연결 해제하지 않습니다.
- 4. Android HTTP 클라이언트가 작동을 멈 춥니 다
- 5. 시작시 TCP 서버가 멈 춥니 다.
- 6. 컴퓨터가 잠겨있을 때 WebClient.DownloadFile이 응답을 멈 춥니 다
- 7. "page_title();"을 실행하려고하면 서버가 멈 춥니 다.
- 8. touchesMoved : withEvent : 응답을 멈 춥니 다
- 9. SELECT DISTINCT를 사용할 때 SQL이 응답을 멈 춥니 다.
- 10. 시작시 eclipse/TFS가 응답을 멈 춥니 다.
- 11. 유성 앱이 응답을 멈 춥니 다.
- 12. 주 폼이 응답을 멈 춥니 다
- 13. 스레드 중 하나가 응답을 멈 춥니 다
- 14. 업데이트시 SQLite 데이터베이스가 응답을 멈 춥니 다.
- 15. "레일"을 사용할 때 레일 서버가 멈 춥니 다
- 16. 실행 옥타브를 실행할 때 Emacs가 응답을 멈 춥니 다
- 17. 가속기가 메뉴 모음이 숨겨져있을 때 응답을 멈 춥니 다.
- 18. Jenkins가 Android 프로젝트를 빌드 할 때 응답을 멈 춥니 다
- 19. PyQt : IP를 수신 할 때 창이 응답을 멈 춥니 다.
- 20. Java 코딩 - 실행할 때 프로그램이 응답을 멈 춥니 다.
- 21. 클라이언트가 연결을 끊을 때까지 Java TCP 서버가 패킷을받지 못합니다.
- 22. 여객선 프로세스가 멈 춥니 다?
- 23. XmlDocument.Load가 멈 춥니 다?
- 24. 카메라가 멈 춥니 다
- 25. 클라이언트가 연결을 끊을 때 서버 DCOM에서 참조를 해제하는 방법
- 26. 클라이언트가 연결 만하고 데이터를 보내지 않으면 내 서버가 멈 춥니 다.
- 27. Tweetstream이 작동을 멈 춥니 다
- 28. 서버가 응답하지 않으면 JAX-WS SOAP 서비스가 멈 춥니 다.
- 29. Google Compute Engine에서 MongoDB 서버가 작동을 멈 춥니 다
- 30. 서버가 연결을 끊을 경우에만 파일 전송이 완료됩니다.
어떻게 작동하지 않습니까? 새로운 연결을 수락하지 않거나 CommunicationThread가 멈 춥니 다. –
나는 클라이언트로부터받은 모든 메시지를 설정하는 textview를 가지고있다. 하지만 때마다 어떤 클라이언트 diconnectes textview 표시 클라이언트가 : null 및이 루프에 가서 마지막으로 내 응용 프로그램 충돌이 발생합니다. – Mohit
그래, 그냥 문자열을받을 일부 포트에서 수신, 뭔가를 받으면 서버를 중지하십시오 :) –