728x90
반응형

//여기서부터 클라이언트

 

import java.io.*;
import java.net.*;

public class ClientExample1 {

  public static void main(String[] args) {
    Socket socket = null;
    try{
      socket = new Socket("127.  0.  0.  1", 90);     //소켓생

                                   //↑서버소켓의ip,↑서버소켓의 포트

      InputStream in = socket.getInputStream();

                             //데이터를 수신할때 입력스트림을 리턴하는 메소드
      OutputStream out = socket.getOutputStream();

                             // 대이터를 보낼때 출력스트림을 리턴하는메소드
      String str = "Hello, Server"; //기본중의 기본!! 헬로서버 식상하다

                            
      out.write(str.getBytes());  //out이란 변수에는 이미 소켓의 출력스트림이 들어있고.

                                          //str.getBytes()를 사용해  문자열을 바이트로 변환한뒤

                                          //out에있는 write란메소드를 통해 헬로서버란 메세지를 서버에 보냄

 

      byte arr[] = new byte[100];       //배열생성
      in.read(arr);     // wirte와 비슷한 원리로 in에는 이미 입력스트림이 들어있으니

                          // read라는 메소드를 통해 arr이라는 배열에 담는다

      System.out.println(new String(arr));     //arr배열의 내용을 출력 여기엔 즉 서버측의

                                                            // 메세지가 담긴다
    }catch(Exception e){
      e.printStackTrace();                         //소켓을 생성할때 와 입출력 메소드를 쓸때

                                                          //해당 Exception을 캣치하고
    }
    finally{                                            //finally안에 있는 구문은 Exception이 발생하던 안하던

                                                          //결국 실행되는 구문이니 socket.close()를 통해

                                                         //생성했던 소켓을 소멸시킨다. 소켓을 닫는것은 매우중요!
      try{
        socket.close();
      }catch(IOException e){
       
      }
    }
  }
}

 

//여기까지 클라이언트

 

//여기서부터 서버 -----------------------------------------
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerExample1 {


  public static void main(String[] args) {
   
    ServerSocket serverSocket = null;       //서버측 소켓
    Socket socket = null;                   //
    try{
      serverSocket = new ServerSocket(90);      //자신의 포트설정
      socket = serverSocket.accept();              

//accept()는 수신 소켓의 연결 요청 대기열에서 보류 중인 첫째 연결 요청을 동기적으로

//추출한 다음 새로운 Socket을 만들어 반환함

//이라는 정의가 있지만 이건뭐 영어도 아닌것이 뭔소린지 모르겠다

//쉽게말해 서버에서 대기하고 있다가 클라이언트 소켓이라는 손님이오면 음식(소켓생성)을

//내주는 웨이터같은 역할이라고나할까??

//이하 나머지는 차이없다.

      InputStream in = socket.getInputStream();  
      OutputStream out = socket.getOutputStream();
      byte arr[] = new byte[100];
      in.read(arr);
      System.out.println(new String(arr));
      String str = "Hello client";
      out.write(str.getBytes());
    }catch(Exception e){
      e.printStackTrace();
    }
    finally{
     try{
       socket.close();
     }catch(Exception ignored){
      
     }
     try{
       serverSocket.close();
     }catch(Exception ignored){
      
     }
    }
   

  }

}
//여기까지 서버 -----------------------------------------

 

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,