Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
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
Tags
more
Archives
Today
Total
관리 메뉴

개발자 도전기

[JAVA] 네트워크 입출력 본문

개발공부/JAVA

[JAVA] 네트워크 입출력

jnnjnn 2024. 3. 29. 17:06

서버와 클라이언트

-네트워크는 여러 컴퓨터들을 통신 회선으로 연결한 것을 말한다
-네트워크에서 서비스를 제공하는 프로그램을 서버라고 부른다
-서비스를 요청하는 프로그램을 클라이언트라고 부른다
-클라이언트가 서비스를 요청하고, 서버가 응답하는 방식으로 통신한다

 

IP주소와 Port번호

-IP주소란 네트워크 어댑트마다 할당되는 컴퓨터의 고유한 주소이다
-Port 번호란 운영체제가 관리하는 서버 프로그램의 연결 번호이다
-IP주소로 통신할 컴퓨터를 결정하고 Port 번호로 어떤 프로그램의 서버와 통신할지 결정한다
-IP주소 : Port번호 형태로 사용된다

TCP 네트워킹

-연결형 프로토콜로 상대방이 연결된 상태에서 데이터를 주고 받는다
-데이터가 순서대로 전달되며 손실이 발생하지 않는다
-IP와 함께 사용하기 때문에 TCP/IP라고도 한다
-ServerSocket은 서버가 클라이언트의 연결을 수락하는 클래스이다
-Socket은 클라이언트에서 연결 요청할 때, 클라이언트와 서버 양쪽에서 데이터를 주고 받을 때 사용되는 클래스이다

// Server Computer
public class C01Computer1 {
    public static void main(String[] args) throws IOException {
        // 연결을 기다리는 쪽
        ServerSocket serverSocket = new ServerSocket(9000);
        Socket socket = serverSocket.accept(); // 연결 요구하기를 기다림

        // socket 생성

        try (socket) {// 출력 스트림 데코레이팅
            OutputStream os = socket.getOutputStream();
            OutputStreamWriter osw = new OutputStreamWriter(os);
            BufferedWriter bw = new BufferedWriter(osw);
            PrintWriter pw = new PrintWriter(bw);

            try (os; osw; bw; pw) {
                pw.println("hello world");
            }
        }
    }
}
// Client Computer
public class C01Computer2 {
    public static void main(String[] args) throws IOException {
        //연결을 요구하는 쪽
        // socket 생성
        Socket socket = new Socket("172.30.1.21", 9000);
        try (socket) {
            // 입력 스트림 데코레이팅
            InputStream is = socket.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            try (is; isr; br;) {
                String data = br.readLine();
                System.out.println("컴퓨터1이 보낸 메시지 = " + data);
            }
        }
    }
}

위 코드의 결과로 client computer는 'hello world'를 출력한다

'개발공부 > JAVA' 카테고리의 다른 글

[JAVA] LOMBOK  (0) 2024.04.16
[JAVA] Enum (열거 타입)  (0) 2024.04.04
[JAVA] I/O Stream  (1) 2024.03.27
[JAVA] 멀티 스레드  (0) 2024.03.26
[JAVA] 예외(Exception)  (0) 2024.03.25