13. Network 네트워크

CHOISUJIN·2023년 1월 5일
0
post-thumbnail

윈도우는 이클립스 창 열린 상태로 이클립스 한번 더 누르면 창이 하나 더 켜지는데 맥은 켜지지 않는다

  • 해결법 !!!
  1. 터미널 열기
  2. open -n /Applications/Eclipse.app 입력
    ** eclipse 반드시 Applications에 들어가 있어야 열림 !
  • 서버 : 서비스를 제공하는 프로그램 또는 컴퓨터

  • 클라이언트 : 서비스를 요청하여 사용하는 프로그램 또는 컴퓨터

  • IP주소 : Internet Protocol 네트워크 상에서 컴퓨터를 식별하는 번호
    --> 프로토콜 Protocol : 통신방법에 대한 규약 - 접속이나 전달방식, 데이터의 형식, 검증방법 등을 맞추기 위한 약속

  • 포트 Port : 같은 컴퓨터 내에서 프로그램을 식별하는 번호
    ** 클라이언트는 서버 연결 요청 시 IP주소와 포트 번호를 알아야 함!!

  • TCP(Transmission Control Protocol) : 데이터 전달의 신뢰성을 최대한 보장하기 위한 방식으로 연결지향형 통신. 순차적으로 데이터를 전송하고 확인 및 오류 시 재전송 --> 금융기관, 기차표 예매

  • UDP(User Datagram Protocol) : 데이터의 빠른 전달을 보장하기 위한 방식으로 비연결 지향형 통신. 확인 및 재전송 작업이 없다 --> 스트리밍 서비스

  • 소켓 Socket : 프로세스 간의 통신에 사용되는 양쪽 끝 단

- TCP 소켓 프로그래밍

클라이언트와 서버 간의 1:1 소켓 통신
서버가 먼저 실행되어 클라이언트의 요청을 기다려야 하고 서버용 프로그램과 클라이언트용 프로그램을 따로 구현해야 함
java.net 패키지의 serverSocket, Socket 클래스 제공

<서버용 TCP 소켓 프로그래밍 순서>

  1. 서버의 포트번호 정함
    int port = 8500;
  2. 서버용 소켓 객체 생성
    ServerSocket serverSocket = new ServerSocket(port);
  3. 클라이언트 쪽에서 접속 요청이 오길 기다림
    Socket clientSocket = serverSocket.accpet();
  4. 접속 요청이 오면 요청 수락 후 해당 클라이언트에 대한 소켓 객체 생성
    String clientIP = clientSocket.getInetAddress().getHostAddress();
  5. 연결된 클라이언트와 입출력 스트림 생성
    InputStream is = clientSocket.getInputStream();
    OutputStream os = clientSocket.getOuputStream();
  6. 보조 스트림을 통해 성능 개선
    BufferedReader br = new BufferedReader(new InputStreamReader(is));
    PrintWriter pw = new PrintWriter(os);
  7. 스트림을 통해 읽고 쓰기
    pw.println("서버 접속 성공");
    pw.flush();
    ====== 예외처리 필수 =======
    8.통신종료 --> null인지 확인하고, 예외처리
    br.close();
    pw.close();
    severSocket.close();
    clientSocket.close();

<클라이언트용 TCP 소켓 프로그래밍 순서>

  1. 서버의 IP주소와 서버가 정한 포트번호를 매개변수로 하여 클라이언트용 소켓 객체 생성
    String serverIP = "127.0.0.1"; --> 자기 자신을 가리키는 IP주소
    int port = 8500;
    Socket clientSocket = new Socket(serverIP, port);
  2. 서버와의 입출력 스트림 오픈
  3. 보조스트림을 통해 선능 개선
    BufferedReader br = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
    PrintWriter pw = new PrintWriter(clientSocket.getOutputStream());
  4. 스트림을 통해 읽고 쓰기
    String message = br.readLine();

Scanner sc = new Scanner(System.in);
System.out.print("입력 :");
String input = sc.nextLine();
pw.println(input);
pw.flush();
====== 예외처리 필수 =======
5. 통신종료 --> null인지 확인하고, 예외처리
br.close();
pw.close();
clientSocket.close();

profile
매일매일 머리 터지는 중 ᕙ(•̀‸•́‶)ᕗ

0개의 댓글