Blog

2 August 2019

java socket 예제

소켓을 통해 서버로 데이터를 보내려면 EchoClient 예제를 PrintWriter에 작성해야 합니다. 서버의 응답을 얻으려면 EchoClient는 try-with 리소스 문의 네 번째 문에서 생성된 BufferedReader 개체 stdIn에서 읽습니다. Java 플랫폼의 I/O 클래스에 아직 익숙하지 않은 경우 기본 I/O를 읽을 수 있습니다. 연결이 설정되면 I/O 스트림을 사용하여 통신이 발생할 수 있습니다. 각 소켓에는 OutputStream과 InputStream이 모두 있습니다. 클라이언트의 OutputStream은 서버의 InputStream에 연결되고 클라이언트의 InputStream은 서버의 OutputStream에 연결됩니다. 다음 GreetingServer 프로그램은 명령줄 인수에 의해 지정된 포트 번호에 클라이언트를 수신 대기 소켓 클래스를 사용하는 서버 응용 프로그램의 예입니다 . 이 메서드는 클라이언트가 지정된 포트의 서버에 연결하거나 소켓이 시간 초과하는 때까지 설정(setSoTimeout() 메서드를 사용하여 시간 시간 지정 값이 설정되었다고 가정할 때까지 차단합니다. 그렇지 않으면 이 메서드는 무기한으로 차단됩니다. Java는 클라이언트와 서버 간의 낮은 수준의 통신 세부 정보를 처리하는 클래스 및 인터페이스 컬렉션을 제공합니다. KnockKnockClient 예제에서는 두 번째 명령줄 인수를 소켓을 만들 때 포트 번호로 사용합니다. 서버 컴퓨터의 포트 수인 원격 포트 번호이며 KnockKnockServer가 수신 대기 중인 포트입니다. 예를 들어, 다음 명령은 서버 프로그램 인 KnockKnockServer 및 4444를 원격 포트 번호로 실행하는 컴퓨터의 이름으로 knockknockserver.example.com 사용하여 KnockKnockClient 예제를 실행합니다.

예를 들어, 서버가 연결을 닫기 전에 한 번만 통신하는 경우; 이제 세션이 끝나면 서버에 종료 신호를 보냅니다. accept 메서드는 클라이언트가 시작되고 이 서버의 호스트 및 포트에 대한 연결을 요청할 때까지 기다립니다. (knockknockserver.example.com라는 컴퓨터에서 서버 프로그램 KnockKnockServer를 실행했다고 가정해 보겠습니다.) 이 예제에서 서버는 첫 번째 명령줄 인수에 의해 지정된 포트 번호에서 실행됩니다. 연결이 요청되고 성공적으로 설정되면 accept 메서드는 동일한 로컬 포트에 바인딩되고 원격 주소와 원격 포트가 클라이언트의 포트로 설정된 새 Socket 개체를 반환합니다. 서버는 이 새 소켓을 통해 클라이언트와 통신할 수 있으며 원래 ServerSocket 프로그램의 클라이언트 연결 요청을 계속 수신할 수 있습니다. 그러나 프로그램의 수정된 버전은 여러 클라이언트 지원에 제공됩니다.

Bize Ulaşın