Java의 소켓 프로그래밍에 대한 모든 것을 알고



Java 소켓 프로그래밍은 서로 다른 JRE에서 실행되는 애플리케이션 간의 통신에 사용됩니다. Java 소켓 프로그래밍은 연결 지향적이거나 비 연결형 일 수 있습니다.

소켓 프로그래밍 다른 곳에서 실행되는 응용 프로그램 간의 통신에 사용됩니다. . 연결 지향적이거나 비 연결 성일 수 있습니다. 전체적으로 소켓은 클라이언트와 서버 간의 연결을 설정하는 방법입니다. 이 기사에서는 소켓 프로그래밍에 대해 설명합니다.

이 기사에서 다루는 주제는 다음과 같습니다.





Java에서 소켓 프로그래밍이란 무엇입니까?

소켓 프로그래밍 네트워크에서 두 노드를 연결하여 서로 통신하는 방법입니다. 하나 소켓 (노드)는 IP의 특정 포트를 수신하고 다른 소켓 연결을 형성하기 위해 다른 사람에게 손을 뻗습니다.

클라이언트 서버 통신-Java의 소켓 프로그래밍-Edureka



서버는 리스너를 형성합니다. 소켓 동안 클라이언트가 서버에 도달합니다. 소켓 및 서버 소켓 연결 지향 소켓 프로그래밍에 사용됩니다.

이제 소켓 프로그래밍의 핵심 개념, 즉 소켓을 이해하겠습니다.

Java에서 소켓이란 무엇입니까?

소켓네트워크에서 실행되는 두 프로그램 간의 양방향 통신 링크의 한 끝점입니다. ㅏ 소켓 TCP 계층이 데이터가 전송 될 애플리케이션을 식별 할 수 있도록 포트 번호에 바인딩됩니다.



엔드 포인트는 IP 주소와 포트 번호의 조합입니다. Java 플랫폼의 패키지는 클래스를 제공합니다.소켓Java 프로그램과 네트워크의 다른 프로그램 사이의 양방향 연결의 한쪽을 구현합니다. 이 클래스는 플랫폼에 의존하는 구현 위에 위치하여 Java 프로그램에서 특정 시스템의 세부 정보를 숨 깁니다. 네이티브 코드에 의존하는 대신 클래스를 사용하면 플랫폼 독립적 인 방식으로 네트워크를 통해 통신 할 수 있습니다.

자바의 얕은 복사 및 깊은 복사

이제 Java의 Socket이 무엇인지 알았으므로 더 나아가 클라이언트가 서버와 통신하는 방법 및 서버가 응답하는 방법을 이해하겠습니다.

클라이언트 측 프로그래밍

클라이언트 측 프로그래밍의 경우 클라이언트는 먼저 서버가 시작될 때까지 기다립니다. 서버가 가동되고 실행되면 요청을 서버로 보냅니다. 그 후 클라이언트는 서버의 응답을 기다립니다. 따라서 이것은 클라이언트와 서버 통신의 전체 논리입니다. 이제 클라이언트 측 및 서버 측 프로그래밍을 자세히 이해하겠습니다.

클라이언트 요청을 시작하려면 아래에 언급 된 단계를 따라야합니다.

1. 연결 설정

첫 번째 단계는 소켓 연결을 설정하는 것입니다. 소켓 연결은 두 시스템이 서로의 네트워크 위치 (IP 주소) 및 TCP 포트에 대한 정보를 가지고 있음을 의미합니다.

아래 문을 사용하여 소켓을 만들 수 있습니다.

소켓 소켓 = new Socket (“127.0.0.1”, 5000)

  • 여기에서 첫 번째 인수는 서버의 IP 주소 .

  • 두 번째 인수는 TCP 포트 . (서버에서 실행해야하는 응용 프로그램을 나타내는 숫자입니다.)

2. 커뮤니케이션

소켓 연결을 통해 통신하기 위해 데이터 입력 및 출력 모두에 스트림이 사용됩니다. 연결을 설정하고 요청을 보낸 후에는 연결을 닫아야합니다.

3. 연결 닫기

소켓 연결은 서버에 메시지가 전송되면 명시 적으로 닫힙니다.

이제 클라이언트 측에서 소켓 연결을 구현하는 Java 프로그램을 작성하는 방법을 살펴 보겠습니다.

// ClientSide 용 Java 프로그램 import java.net. * import java.io. * public class ClientProgram {// 소켓 및 입력 출력 스트림 초기화 private Socket socket = null private DataInputStream input = null private DataOutputStream out = null // constructor IP 주소 및 포트 입력 public Client (String address, int port) {// 연결 설정 try {socket = new Socket (address, port) System.out.println ( 'Connected') // 터미널 입력에서 입력 = new DataInputStream (System.in) // 출력을 소켓으로 보냅니다 out = new DataOutputStream (socket.getOutputStream ())} catch (UnknownHostException u) {System.out.println (u)} catch (IOException i) {System.out .println (i)} // 입력에서 메시지를 읽을 문자열 String line = ''// 'Over'가 입력 될 때까지 계속 읽기 while (! line.equals ( 'Over')) {try {line = input.readLine ( ) out.writeUTF (line)} catch (IOException i) {System.out.println (i)}} // 연결 종료 try {input.close () out.close () socket.close ()} catch (IOException 나는 ) {System.out.println (i)}} public static void main (String args []) {Client client = new Client ( '127.0.0.1', 5000)}}

이제 서버 측 프로그래밍을 구현 한 다음 출력에 도달 해 보겠습니다.

서버 측 프로그래밍

기본적으로 서버는 개체를 인스턴스화하고 클라이언트 요청을 기다립니다. 클라이언트가 요청을 보내면 서버는 응답으로 다시 통신합니다.

서버 측 애플리케이션을 코딩하려면 두 개의 소켓이 필요하며 다음과 같습니다.

  • ServerSocket 클라이언트 요청을 기다립니다 (클라이언트가 새로운 Socket ()을 만들 때)

  • 평범한 노인 소켓 클라이언트와의 통신을 위해.

그런 다음 응답으로 클라이언트와 통신해야합니다.

통신

getOutputStream () 메소드는 소켓을 통해 출력을 보내는 데 사용됩니다.

연결 종료

모든 작업이 완료되면 소켓과 입력 / 출력 스트림을 닫아 연결을 닫는 것이 중요합니다.

이제 서버 측에서 소켓 연결을 구현하는 Java 프로그램을 작성하는 방법을 살펴 보겠습니다.

// 서버 측용 Java 프로그램 import java.net. * import java.io. * public class ServerSide {// 소켓 및 입력 스트림 초기화 private Socket socket = null private ServerSocket server = null private DataInputStream in = null // constructor with port public Server (int port) {// 서버 시작 및 연결 대기 try {server = new ServerSocket (port) System.out.println ( 'Server started') System.out.println ( 'Waiting for a client .. . ') socket = server.accept () System.out.println ('Client Accepted ') // = new DataInputStream (new BufferedInputStream (socket.getInputStream ())) String line =' '/ / 'Over'가 전송 될 때까지 클라이언트에서 메시지를 읽습니다. while (! line.equals ( 'Over')) {try {line = in.readUTF () System.out.println (line)} catch (IOException i) {System. out.println (i)}} System.out.println ( 'Closing connection') // 연결 종료 socket.close () in.close ()} catch (IOException i) {System.out.println (i)}} public static void main (String args []) { 서버 서버 = new Server (5000)}}

클라이언트와 서버 끝을 모두 구성한 후 먼저 서버 측 프로그램을 실행할 수 있습니다. 그 후에 클라이언트 측 프로그램을 실행하고 요청을 보내야합니다. 클라이언트 측에서 요청이 전송되는 즉시 서버가 응답합니다. 아래 스냅 샷은 동일합니다.

1. 서버 측 스크립트를 실행하면 시작되고 클라이언트가 시작될 때까지 기다립니다.

2. 다음으로 클라이언트가 연결되어 문자열 형태로 요청을 입력합니다.

3. 클라이언트가 요청을 보내면 서버가 응답합니다.

이것이 Java에서 소켓 프로그램을 실행하는 방법입니다. 터미널 창이나 명령 프롬프트에서 이러한 프로그램을 실행할 수도 있습니다. 그러나 Eclipse는 기능이 뛰어 나기 때문에 콘솔에서 두 프로그램을 간단히 실행할 수 있습니다.

이것으로 Java의 소켓 프로그래밍에 대한 기사의 끝으로 이동합니다. 나는 당신의 지식에 약간의 빛을 던 졌기를 바랍니다. 소켓 프로그래밍.

확인 전 세계에 250,000 명 이상의 만족 한 학습자 네트워크를 보유한 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 이 자바 인터뷰 질문 외에도 자바 개발자가 되고자하는 학생과 전문가를 위해 설계된 커리큘럼을 마련했습니다.

질문이 있으십니까? 이 'Java의 소켓 프로그래밍'기사의 주석 섹션에 언급 해 주시면 가능한 한 빨리 답변을 드리겠습니다.