●소켓
- 네트워크에 연결된 각 컴퓨터간에 데이터를 주고 받을 때 사용하는 도구이다.
- 소켓은 하드웨어 장비가 아닌 소프트웨어 차원의 개발 도구이다.
●서버 소켓
- 서버 소켓은 클라이언트 소켓으로부터 접속 요청을 기다리고, 접속 요구가 있으면 클라이언트와 통신할 서버 측의 소켓을 생성한다.
- 자바에서는 ServerSocket 클래스가 서버 소켓을 위한 기능을 제공한다.
●클라이언트 소켓
- 서버 소켓의 IP주소와 포트 번호를 필요로한다.
- 클라이언트에서 소켓 객체를 만들면, 소켓은 바로 주어진 IP주소와 포트 번호로 서버에 연결을 시도하고 서버소켓은 다른 소켓을 만들어 클라이언트 소켓과 연결한다.
- 자바에서는 Socket 클래스를 이용한다.
●ex
- 서버에서 클라이언트에 현재 시간을 전송하는 예제
- ServerSocketTest.java (서버 소켓)
import java.io.*; import java.net.*; import java.util.Date;
public class ServerSocketTest { public final static int daytimeport=13; public static void main(String args[]){ ServerSocket theServer; Socket theSocket = null; BufferedWriter writer; try{ theServer = new ServerSocket(daytimeport); System.out.println("서버 시작"); while(true){ try{ theSocket = theServer.accept(); OutputStream os = theSocket.getOutputStream(); writer = new BufferedWriter(new OutputStreamWriter(os)); Date now = new Date(); writer.write(now.toString()+"\r\n"); writer.flush(); }catch(IOException e){ System.out.println(e); }finally{ try{ if(theSocket !=null ) theSocket.close(); }catch(IOException e){ System.out.println(e); } } } }catch(IOException e){ System.out.println(e); } } }
|
- ClientSocketTest.java (클라이언트 소켓)
import java.io.*; import java.net.*;
public class ClientSocketTest { public static void main(String args[]){ Socket theSocket; String host; InputStream is; BufferedReader reader; if(args.length>0){ host = args[0]; }else{ host="localhost"; }
try{ theSocket = new Socket(host, 13); is = theSocket.getInputStream(); reader = new BufferedReader(new InputStreamReader(is)); String theTime = reader.readLine(); System.out.println("서버의 시간은:"+theTime); }catch(UnknownHostException e){ System.out.println(args[0]+"호스트를 찾을 수 없음"); }catch(IOException e){ System.err.println(e); System.out.println("a"); }
}
} |
댓글 ( 5)
댓글 남기기