자바

●소켓

- 네트워크에 연결된 각 컴퓨터간에 데이터를 주고 받을 때 사용하는 도구이다.

 

- 소켓은 하드웨어 장비가 아닌 소프트웨어 차원의 개발 도구이다.
 

 

●서버 소켓

- 서버 소켓은 클라이언트 소켓으로부터 접속 요청을 기다리고, 접속 요구가 있으면 클라이언트와 통신할 서버 측의 소켓을 생성한다.

 

- 자바에서는 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");

}

 

 

 

}

 

 

 

 

about author

PHRASE

Level 60  네오

고난이 있을 때마다 그것이 참된 인간이 되어가는 과정임을 기억해야 한다. -괴테-

댓글 ( 5)

댓글 남기기

작성

자바 목록    more