2013년 7월 2일 화요일

(130702) 7일차 ServerSocketTest.java, ClientTest.java (TCP/IP Server & Client 테스트)

 - TCP/IP Socket : Socket 은 두개의 Stream(Input, Output)과 연결되어 있다.

 - TCP/IP Server & Client














 - ServerSocketTest.java 소스
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class ServerSocketTest {

public static void main(String[] args) {
try {
// 데이터를 주고받는 소켓클래스 선언
Socket socket = null;
// 네트워크로 다른 클라이언트의 데이터를 받기위해서 객체를 생성
ServerSocket server = new ServerSocket(9000); // 포트번호 9000번

// 받기 위한 준비
System.out.println("준비");
// 클라이언트로부터 넘어온 소켓을 이용하여 데이터를 주고 받음
socket = server.accept();
System.out.println("준비완료");

Scanner sc = new Scanner(socket.getInputStream()); // 소켓을 이용해서 getInputStream()을 만듬
// 클라이언트로부터 데이터를 통해 넘어온 값을 읽어드림
String data = sc.nextLine(); // 어떤게 넘어올지 모르므로 nextLine()이 적당
System.out.println(data);

} catch (IOException e) {
e.printStackTrace();
}
}
}


 - ClientTest.java 소스
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class ClientTest {
public static void main(String[] args) {
try {
// 서버에 접속하기 위한 객체
Socket client = new Socket("203.233.196.185", 9000);

String data = "good lunch!";
// 데이터를 전송하기 위해서 outputstream 객체 생성
PrintWriter pw = new PrintWriter(client.getOutputStream()); // client는 소켓 - 소켓을 이용해서 getOutputStream()을 만듬
// 데이터를 넘겨줌
pw.println(data);
pw.flush(); // 즉시 넘겨줌

pw.close();

} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}



 - Client 실행








 - 결과