Socket, ServerSocket 기본실습 : 데이터 주고 받기 (서버쪽 계속 열어놓기)
Client
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;
//Socket(Client) : 데이터 받기2
public class TcpClientEx03 {
public static void main(String[] args) {
Socket socket = null;
BufferedReader br = null; //서버에서 보낸 메세지 읽기
if(args.length != 1){
System.out.println("서버의 IP를 입력해주세요");
System.exit(0);
}
try {
System.out.println("서버에 연결 중입니다.");
socket = new Socket(args[0], 7777); //서버쪽에서 args를 보낸것을 받음
System.out.println("서버에 연결되었습니다.");
br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
System.out.println("서버에서 보낸 메세지 : " + br.readLine());
} catch (UnknownHostException e) {
} catch (IOException e) {
} finally{
if(socket != null) try{socket.close();} catch(IOException e){}
}
}
}
Server
import java.io.BufferedOutputStream;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
//ServerSocket (Server) : 데이터 전달 (계속 대기)
public class TcpServerEx03 {
public static void main(String[] args) {
ServerSocket serverSocket = null;
Socket socket = null;
BufferedWriter bw = 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());
bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
bw.write("Hello World");
bw.flush(); //출력 버퍼를 비우는 메서드! (반드시 써줄것!)
} catch (IOException e) {
e.printStackTrace();
} finally {
if ( bw != null) try{bw.close();} catch(IOException e){}
if ( socket != null) try{socket.close();} catch(IOException e){}
}
}
}
}