SSISO Community

시소당

자바네트워크 2

소켓

일반적으로  C  언어를  이용해서  네트워크  프로그램을  작성하는  경우,  프로그램  
절차는  다음  그림과  같다.  서버  프로그램은  소켓을  생성하고,  bind()를  이용해서
소켓과  어드레스  및  포트를  결합시킨다.  listen()  함수를  호출하고,  bind()함수를
호출해서  클라이언트로  부터  요청이  올  때까지  블락되어서  기다린다.
bind()  함수는클라이언트로부터  요청이  오면  클라이언트와  콩신할  수  있는  소켓을  만들어서
리턴한다.  리턴된  소켓을  통해서  서버와  클라이언트는  read()/write()  함수를  이용해서
통신할  수  있다.
클라이언트에서는  소켓을  생성하고,  connnect()함수를  통해서  서버에  연결을  시도한다.
connect()를  호출하면  서버에서는  accept()함수  가  실행된다.  서버와  연결되면  소켓을
통해  read/write를  할  수  있다.


서버소켓

자바에서  네트워크  프로그래밍을  하기  위해서는  java.net패키지를  이용한다.

서버프로그램을  만들  때는  소켓을  만들고,  bind()하고  listen()하는  일들이  항상  반복된다.
자바에서는  이러한  반복  작업을  제거하기  위해서  서버  소켓(ServerSocket)이라는  클래스를
만들었다.  프로그래머는  서버  소켓을  만들어서  accept()메소드를  호출한다.  
accept()  메소드는  클라이언트로  부터  컨넥션이  요청될  때까지  블락되있다가,  요청이
들어오면  클라이언트와  통신할  수  있는  소켓을  생성해서  리턴해준다.  서버는  리턴된
소켓을  이용해서  클라이언트와  통신할  수  있다.
클라이언트에서도  마찬가지로  반복되는  작업을  제거하기  위해,  connect()라는  함수를  호출할
필요가  없도록  소켓(Socket)이라는  클래스를  만들었다.  따라서,  클라이언트에서는  소켓을  만들고,
소켓을  이용해서  만든  I/O  스트림을  이용해서  서버와  통신할  수  있다.

851 view

4.0 stars