자바 소켓 프로그래밍 예제

새 클라이언트마다 수락 호출에서 반환되는 새 소켓이 서버가 필요합니다. serverSocket은 연결된 클라이언트의 요구를 충족하면서 연결 요청을 계속 수신하는 데 사용됩니다. 우리는 우리의 첫 번째 예에서 아직 이것을 허용하지 않았습니다. KnockKnockServer 예제를 간단하게 하기 위해 단일 연결 요청을 듣고 처리하도록 설계되었습니다. 그러나 여러 클라이언트 요청이 동일한 포트에 들어와 동일한 ServerSocket에 들어올 수 있습니다. 클라이언트 연결 요청은 포트에서 큐에 대기되므로 서버는 연결을 순차적으로 수락해야 합니다. 그러나 서버는 각 클라이언트 연결당 하나의 스레드인 스레드를 사용하여 동시에 서비스를 제공할 수 있습니다. 서버에 메시지가 전송되면 소켓 연결이 명시적으로 닫힙입니다. 다음 단계는 소켓을 사용하여 두 컴퓨터 간에 TCP 연결을 설정 할 때 발생 – 하나는 소켓 프로그래밍에 사용할 수있는 두 가지 통신 프로토콜이 있습니다 : 사용자 데이터 그램 프로토콜 (UDP) 및 전송 제어 프로토콜 (TCP). 이를 수행하는 방법은 다른 스레드에서 클라이언트가 요청하는 모든 새 클라이언트 및 서비스에 대해 새 소켓을 만드는 것입니다. 동시에 제공되는 클라이언트 수는 실행 중인 스레드 수와 동일합니다.

위의 예제에서는 예외 처리를 사용하지 않았지만 예외를 처리하는 것이 좋습니다. (지금부터, 우리의 모든 코드는 예외를 처리합니다!) 위의 로 작성할 수 있습니다 : 어느 사람이 말해 …. 멀티 크렌트 서버소켓 ……… 자바에서는 외부 클래스에서 스레드에 액세스하기위한 조항이 있습니다. 스레드는 소켓 클라이언트 중 하나입니다 ????? … 소켓을 닫기 전에 항상 출력 및 입력 스트림을 닫아야 합니다. 동시에 여러 클라이언트를 서비스할 수 있도록 KnockKnockServer를 수정합니다. KKMultiServer와 KKMultiServerThread의 두 클래스가 솔루션을 구성합니다. KKMultiServer는 서버 소켓에서 클라이언트 연결 요청을 수신 대기하여 영원히 반복됩니다. 요청이 들어오면 KKMultiServer는 연결을 수락하고, 처리하는 새 KKMultiServerThread 개체를 만들고, 수락에서 반환된 소켓을 건네주며, 스레드를 시작합니다. 그런 다음 서버가 연결 요청을 수신 대기로 돌아갑니다. KKMultiServerThread 개체는 소켓을 읽고 작성하여 클라이언트와 통신합니다.

새로운 노크 노크 서버 KKMultiServer를 실행 한 다음 연속으로 여러 클라이언트를 실행합니다. 이 자습서에서는 TCP/IP 네트워크를 통해 소켓 프로그래밍에 대한 소개를 제시하고 Java에서 클라이언트/서버 응용 프로그램을 작성하는 방법을 보여 줍니다. UDP는 주류 프로토콜이 아니기 때문에 자주 발생하지 않을 수 있습니다. 클래스 DataOutputStream Java 기본 데이터 형식을 작성할 수 있습니다. 대부분의 메서드는 출력 스트림에 단일 Java 기본 형식을 작성합니다. 이 방법은 writeBytes가 유용한 방법입니다. UDP(사용자 데이터그램 프로토콜)라고 하는 데이터그램 통신 프로토콜은 연결되지 않은 프로토콜이므로 데이터그램을 보낼 때마다 로컬 소켓 설명자와 수신 소켓 의 주소도 보내야 합니다. 아시다시따라 통신이 이루어질 때마다 추가 데이터를 보내야 합니다. 클라이언트가 텍스트를 보내고 서버가 수신하고 인쇄하는 간단한 Java 소켓 프로그래밍을 살펴보겠습니다.

서버를 시작해 봅시다. IDE에서 Java 응용 프로그램으로 실행하기만 하면 됩니다.

01 August, 2019
Posted in Uncategorized

Author: wolff