Programming/JAVA / / 2024. 6. 27. 10:49

Java로 간단한 서버 소켓 구현하기(Java 특정포트 열기)

반응형

Java로 간단한 서버 소켓 구현해서 특정포트 열어서 외부에서 접속 가능한지 테스트 가능합니다.

해당 코드에 대해 설명해드리겠습니다.

Java 프로그램은 서버 소켓을 사용하여 특정 포트에서 클라이언트 연결을 수신 대기하는 간단한 서버를 설정합니다. 프로그램은 주어진 포트 번호(이 경우 7000)에서 서버 소켓을 열고, 연결을 기다립니다. 그런 다음, 프로그램이 종료될 때 서버 소켓을 닫습니다.

 

 

코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
 
public class Java_Server {
    public static void main(String[] args) {
        ServerSocket serverSocket = null;
        try {
            // 서버 소켓 객체 생성
            serverSocket = new ServerSocket();
            
            // 소켓을 로컬호스트의 포트 7000에 바인딩
            serverSocket.bind(new InetSocketAddress("localhost"7000));
            
            // 클라이언트 연결을 대기하는 로직이 추가될 수 있음 (현재는 단순히 바인딩만)
            System.out.println("Server is listening on port 7000");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 서버 소켓이 닫혀 있지 않다면 소켓을 닫음
            try {
                if (serverSocket != null && !serverSocket.isClosed()) {
                    serverSocket.close();
                    System.out.println("Server socket is closed.");
                }
            } catch (IOException ioe) {
                ioe.printStackTrace();
            }
        }
    }
}
cs

 

 

 

주요 부분 설명

 

1. ServerSocket 객체 생성 및 초기화:

    ServerSocket serverSocket = null;

 

2. 서버 소켓 바인딩 :

serverSocket = new ServerSocket();
serverSocket.bind(new InetSocketAddress("localhost", 7000));

 

  • new ServerSocket()을 통해 서버 소켓 객체를 생성합니다.
  • serverSocket.bind(new InetSocketAddress("localhost", 7000))를 사용하여 서버 소켓을 localhost의 포트 7000에 바인딩합니다.
  • 이 코드는 서버가 해당 포트에서 클라이언트 연결을 수신 대기할 준비가 되었음을 의미합니다.

 

3. 예외 처리  :

catch (Exception e) {
     e.printStackTrace();
}

 

  • 소켓을 생성하거나 바인딩하는 동안 발생할 수 있는 모든 예외를 처리합니다.
  • 예외가 발생하면 스택 트레이스를 출력합니다.

4. 예외 처리  :

finally {
     try {
          if (serverSocket != null && !serverSocket.isClosed()) {
              serverSocket.close();
              System.out.println("Server socket is closed.");
           }
     } catch (IOException ioe) {
          ioe.printStackTrace();
     }
}

 

 

  • finally 블록에서는 서버 소켓이 닫혀 있는지 확인하고, 닫혀 있지 않으면 소켓을 닫습니다.
  • 소켓을 닫는 과정에서 IOException이 발생할 수 있으므로, 이를 처리합니다.

 

 

실행결과

 

프로그램을 실행하면 서버가 포트 7000에서 클라이언트 연결을 수신 대기하게 됩니다. 현재 코드에서는 클라이언트 연결을 실제로 처리하는 로직이 없으며, 단지 소켓을 바인딩하고 종료할 때 소켓을 닫는 것만 처리합니다. 실제 서버 기능을 추가하려면, 클라이언트 연결을 수신 대기하고 처리하는 로직을 추가해야 합니다.

예를 들어, 클라이언트 연결을 수신 대기하려면 serverSocket.accept() 메서드를 사용해야 합니다. 이 메서드는 클라이언트 연결을 수락하고 클라이언트와 통신할 수 있는 Socket 객체를 반환합니다.

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유