본문 바로가기
프로그래밍/java

자바 네트워크 프로그래밍 TCP/IP 소켓

by -현's- 2014. 1. 31.
반응형


●소켓

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


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





서버 소켓

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


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

}




}




} 













반응형

댓글