ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • day35 - JAVA (네트워크)
    KIC/JAVA 2021. 8. 3. 22:10
    반응형

    [네트워크]

    -> 여러 대의 컴퓨터를 통신 회선으로 연결한 것

     

    -> 홈 네트워크: 컴퓨터가 방마다 있고, 이들 컴퓨터를 유/무선 등의 통신 회선으로 연결하는 것

     

    -> 지역 네트워크: 회사, 건물 특정 영역에 존재하는 컴퓨터를 통신 회선으로 연결한 것

     

    -> 인터넷: 지역 네트워크를 통신 회선으로 연결한 것

     

     

    [IP주소와 포트]

    -> IP 주소

       -> 네트워크상에서 컴퓨터를 식별하는 번호

       -> 네트워크 어댑터마다 할당

       -> IP주소 확인 법 - 명령 프롬프트 사용

     

     

     

     

     

    [클라이언트 서버 예제]

     

    [server]

    package javaPro.java_server;
    
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class EchoServerEx1 {
        public static void main(String[] args) {
            int port = 5000;
            Socket socket = null;
            ServerSocket server = null;
            try {
                server = new ServerSocket(port);
                System.out.println("server 준비됨");
                socket = server.accept();
    
                System.out.println("server:" + server);
                System.out.println("localhost: " + server.getLocalPort());
                System.out.println();
                System.out.println("connected ip:" + socket.getInetAddress());
                System.out.println("connected port: " + socket.getPort() + socket.getPort());
    
                // client에서 보낸 메시지 저장
                BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    
                // out으로 client쪽으로 메시지 전송
                PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
    
                String input = "";
                while ((input = in.readLine()) != null) {
                    out.println(input + "데이터 받았습니다.");
                    out.flush();
                    System.out.println(input);
                    if (input.equals("bye"))
                        break;
    
                }
                socket.close();
                server.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

     

     

    [client]

    package javaPro.java_server;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.Socket;
    import java.util.Scanner;
    
    public class EchoClientEx1 {
        public static void main(String[] args) {
            int port = 5000;
            String ip = "192.168.56.1"; // 서버 ip 주소 (현재는 로컬호스트라 내 IP 주소)
            Socket socket = null;
    
            try {
                String input = "";
                Scanner sc = new Scanner(System.in);
                socket = new Socket(ip, port);
    
                // out으로 server 쪽으로 메시지 전송
                PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
    
                // server에서 보낸 메시지 저장
                BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    
                System.out.println("local port:" + socket.getLocalPort());
                System.out.println("local ip:" + socket.getLocalAddress());
                System.out.println("server port:" + socket.getPort());
                System.out.println("server IP:" + socket.getInetAddress());
    
                System.out.println("메시지 입력: ");
                while ((input = sc.next()) != null) {
    
                    // server 쪽으로 메시지 전송
                    out.println(input);
                    out.flush();
    
                    // server에서 온 답장 출력
                    System.out.println("server msg: " + in.readLine());
                    System.out.println(input + " 다음 메시지를 입력하세요");
                    if (input.equals("bye"))
                        break;
                }
                out.close(); // 이걸 안하면 오류 나는 경우가 많아서 필수로 적을 것
                socket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

     

     

     

     

    300x250

    댓글

Designed by Tistory.