Socket, ServerSocket 기본실습 : Echo 프로그램
Client
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
//Socket(Client) : Echo 프로그램
public class TcpClientEcho {
public static void main(String[] args) {
Socket socket = null;
BufferedReader br = null; //서버에서 보낸 메세지 읽기
BufferedWriter bw = null; //서버에 보낼 메세지
if(args.length != 2){
System.out.println("서버의 아이피와 메세지를 입력하세요");
System.exit(0);
}
try {
System.out.println("서버에 연결 중입니다.");
socket = new Socket(args[0], 7777);
System.out.println("서버에 연결되었습니다.");
bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); //output!
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
// String msg = args[1] + "\n";
bw.write(args[1] + "\n"); //줄바꿈("\n") 이 반드시 필요!
bw.flush();
System.out.println("서버에서 받은 메세지 <--" + br.readLine());
} catch (UnknownHostException e) {
} catch (IOException e) {
} finally{
if ( br != null) try{br.close();} catch(IOException e){}
if ( bw != null) try{bw.close();} catch(IOException e){}
if(socket != null) try{socket.close();} catch(IOException e){}
}
}
}
Server
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
//ServerSocket (Server) : Echo 프로그램
public class TcpServerEcho {
public static void main(String[] args) {
ServerSocket serverSocket = null;
Socket socket = null;
BufferedWriter bw = null; //데이터 쓰기
BufferedReader br = null; //데이터 받기
//소켓 준비
try {
serverSocket = new ServerSocket(7777); //7777번 포트로 대기중
System.out.println("서버가 준비되었습니다.");
} catch (IOException e) {
e.printStackTrace();
}
while(true){
try {
socket = serverSocket.accept();
System.out.println("클라이언트가 연결되었습니다 - " + socket.getInetAddress());
br = new BufferedReader(new InputStreamReader(socket.getInputStream())); //input
bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
String message = br.readLine();
System.out.println("클라이언트에서 보낸 메세지 : " + message);
bw.write(message + "\n"); //줄바꿈("\n")
bw.flush(); //출력 버퍼를 비우는 메서드! (반드시 써줄것!)
} catch (IOException e) {
e.printStackTrace();
} finally {
if ( br != null) try{br.close();} catch(IOException e){}
if ( bw != null) try{bw.close();} catch(IOException e){}
if ( socket != null) try{socket.close();} catch(IOException e){}
}
}
}
}