package ex20.ch02;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
// 반이중 통신 (Half Way)
public class MyServer02 {
public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(20000);
System.out.println("서버 소켓이 대기 중 입니다. 연결을 시도해주세요.");
Socket socket = ss.accept(); // 프로세스 대기 상태
System.out.println("소켓이 연결 되었습니다.");
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String reqbody = br.readLine();
String respbody = "";
// 프로토콜
if (reqbody.equals("name")) {
respbody = "MetaCoding";
} else if (reqbody.equals("age")) {
respbody = "39";
} else respbody = "error";
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
bw.write(respbody);
bw.write("\n");
bw.flush();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}

package ex20.ch02;
import java.io.*;
import java.net.Socket;
public class MyClient02 {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 20000); // 소켓 연결
BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));
System.out.println("키보드 입력 대기 중...");
String reqBody = keyboard.readLine(); // name, age
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
bw.write(reqBody);
bw.write("\n"); // 외워라
bw.flush();
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String respBody = br.readLine();
System.out.println(respBody);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}

Share article