반응형
SMALL

<서버의 기초>

-Dispatcher의 필요성 -> Dispatcher은 데이터를 읽어들이는 역할을 하기때문에 서버에서 가장 중요하게                                      작용된다.

 서버의 문제점을 찾고 Reactor Pattern의 필요성을 확인할 수 있다.


○ 일단 가장 간단한 서버의 접속 프로그램을 만들어보았다.


1. 첫번째로 Serverinitializer class파일을 만든 후 다음과 같이 코딩한다.


import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.ServerSocket;

import java.net.Socket;


public class Serverinitializer 

{

      public static void main(String[] args

{

      int port = 5000; ->포트 설정 번호

      System.out.println("Server ON :" + port); -> 서버 on

  try

  {

      ServerSocket serverSocket = new ServerSocket(port); 

      Socket connection;  -> 서버 설정

     while (true)

     {

     connection = serverSocket.accept(); ->연결받기

     InputStreamReader inputStreamReader = new InputStreamReader(connection.getInputStream());

     BufferedReader bufferedReader = new BufferedReader(inputStreamReader); 

     String line = bufferedReader.readLine(); -> 데이터를 읽는 부분

     System.out.println("READ:" + line); -> 받아들인 데이터를 처리하는 부분

     }

 }

  catch (IOException e)

{

   e.printStackTrace(); -> try문에서 에러 발생시 알려주는 부분

    }

}


2. 두번째로 client class를 만든다. 파일명은 TestClient로 한후 다음과 같이 코딩한다.

import java.io.IOException;

import java.io.OutputStream;

import java.net.Socket;

import java.net.UnknownHostException;


public class TestClient 

{


   public static void main(String[] args

  {

        System.out.println("Clinet ON"); -> 클라이언트 서버 on

  try

  {

     String message;

     Socket socket = new Socket("127.0.0.1", 5000); -> 받아들일 소켓 tcp설정

     OutputStream out = socket.getOutputStream();

     message = "0X5001|이건주|26"; -> 화면에 view할 메시지 입력

     out.write(message.getBytes()); ->메시지를 화면에 보내준다.

     socket.close(); -> 소켓 닫기

   }

   catch (UnknownHostException e)

   {

      e.printStackTrace();

   }

   catch (IOException e)

   {

     e.printStackTrace();

    }

  }

}


3. 이렇게 두가지를 완성해서 RUN AS를 해보면 콘솔창에 다음과 같이 나오게 된다.




이때 주의 사항이 있다. 분명 RUN AS를 해보게 된다면 Address already in use라고 경고표시가 나오면서 여러 사이트 비슷한 에러내용이 뜰 것이다. 그렇게 되면 iturm으로 가서 리눅스 명령어 sudo lsof -i tcp:5000 라고 입력을 하게 되면 현재 실행되고 있는 서버목록이 확인될 것이다. 현재 이렇게 포트 5000에서 이미 서버가 돌아가고 있기때문에 이미 사용중인 에러메시지가 나오는 것이다. 그러기때문에 현재 진행중인 서버를 닫아줘야 한다. 서버를 닫기위한 리눅스 명령어는 sudo kill -9 (PID번호)이다. 이걸 입력해주고 다시 돌아와서 RUN AS를 해주면 화면에 보이는 것과 같이 서버가 잘 돌아감을 볼 수 있다.


반응형
LIST
블로그 이미지

만년필석사

,