java socket 예제

Off
Non classé

다음은 클라이언트와 서버 간의 통신을 구현하는 while 루프입니다. 서버가 먼저 말하므로 클라이언트가 먼저 수신을 구해야 합니다. 클라이언트는 소켓에 연결된 입력 스트림을 읽음으로써 이 작업을 수행합니다. 서버가 말하는 경우 « 안녕 »이라고 말하고 클라이언트는 루프를 종료합니다. 그렇지 않으면 클라이언트는 표준 출력에 텍스트를 표시한 다음 표준 입력에 입력하는 사용자의 응답을 읽습니다. 사용자가 캐리지 리턴을 입력하면 클라이언트는 소켓에 연결된 출력 스트림을 통해 서버로 텍스트를 보냅니다. 서버에 메시지가 전송되면 소켓 연결이 명시적으로 닫힙입니다. accept() 동안 서버 소켓이 클라이언트를 기다리는 시간에 대한 시간 시간 값을 설정합니다. 자바 소켓 프로그래밍 예제 튜토리얼에서, 우리는 자바 소켓 서버와 자바 소켓 클라이언트 프로그램을 작성하는 방법을 배울 것입니다. 또한 서버 클라이언트 프로그램이 소켓에 데이터를 읽고 쓰는 방법에 대해서도 알아봅니다. 그러나 이 예제에서는 서버가 연결을 닫기 전에인사말 응답만 보낼 수 있으므로 테스트를 다시 실행하면 연결이 거부됩니다.

지정된 포트에 바인딩된 서버 소켓을 만들려고 시도합니다. 포트가 이미 다른 응용 프로그램에 의해 바인딩된 경우 예외가 발생합니다. 소켓 연결을 통해 통신하기 위해 스트림은 데이터를 입력하고 출력하는 데 모두 사용됩니다. 프로그램이 Socket 클래스를 사용하여 서버 프로그램에 대한 연결을 설정하는 방법과 클라이언트가 소켓을 통해 서버에서 데이터를 보내고 받는 방법을 보여 주는 간단한 예제를 살펴보겠습니다. 소켓이 원격 컴퓨터에 바인딩된 포트를 반환합니다. 이 자습서에서는 TCP/IP를 통해 프로그래밍하는 소켓에 대한 소개에 중점을 두고 Java에서 간단한 클라이언트/서버 응용 프로그램을 작성했습니다. 언바운드 서버 소켓을 만듭니다. 이 생성자 사용 하는 경우 는 서버 소켓을 바인딩할 준비가 된 경우 bind() 메서드를 사용 합니다. KnockKnockProtocol를 만든 후 코드 호출 KnockKnockProtocol의 processInput 메서드 서버 클라이언트에 보내는 첫 번째 메시지를 가져옵니다. 이 예제에서 서버가 가장 먼저 말하는 것은 « 노크! 노크! » 그런 다음 서버는 클라이언트 소켓에 연결된 PrintWriter에 정보를 기록하여 클라이언트에 메시지를 보냅니다. 소켓은 TCP를 사용하는 두 컴퓨터 간의 통신 메커니즘을 제공합니다.

클라이언트 프로그램은 통신 끝에 소켓을 만들고 해당 소켓을 서버에 연결하려고 시도합니다. 이 예제는 독립적으로 실행되는 두 개의 Java 프로그램( 클라이언트 프로그램과 서버 프로그램)으로 구성됩니다. 클라이언트 프로그램은 단일 클래스인 KnockKnockClient에 의해 구현되며 이전 섹션의 EchoClient 예제와 매우 유사합니다. 서버 프로그램은 두 가지 클래스에 의해 구현된다: KnockKnockServer 와 KnockKnockProtocol. EchoServer와 유사한 KnockKnockServer는 서버 프로그램의 주요 방법을 포함하고 포트를 듣고, 연결을 설정하고, 소켓에서 읽고 쓰는 작업을 수행합니다. 클래스 KnockKnockProtocol 농담을 제공합니다. 그것은 현재 의 농담을 추적, 현재 상태 (노크 를 보내, 단서를 전송, 등등), 현재 상태에 따라 농담의 다양한 텍스트 조각을 반환합니다. 이 개체는 클라이언트와 서버가 통신하는 데 사용하기로 동의한 언어인 프로토콜을 구현합니다.

프로그램의 다음 흥미로운 부분은 while 루프입니다. 루프는 표준 입력 스트림에서 한 번에 한 줄씩 읽고 소켓에 연결된 PrintWriter에 작성하여 즉시 서버로 보냅니다. 정의에 따르면 소켓은 네트워크의 다른 컴퓨터에서 실행되는 두 프로그램 간의 양방향 통신 링크의 한 끝점입니다. 전송 계층이 전송될 데이터를 보낼 응용 프로그램을 식별할 수 있도록 소켓은 포트 번호에 바인딩됩니다. 클라이언트 프로그램을 시작할 때 서버가 이미 실행 중이고 클라이언트가 연결을 요청할 때까지 포트를 수신 대기중이어야 합니다.

Comments are closed.