전이중 실습

Jan 10, 2024
전이중 실습
 
  1. 서버 생성
  1. 클라이언트 생성
  1. 클라이언트 → 서버 (메시지를 지속적으로 전송)
 
💡
서버
1
package ex17.multi; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.nio.charset.Charset; public class Server { public static void main(String[] args) { try { // 1. 소켓과 버퍼 만들기 ServerSocket serverSocket = new ServerSocket(20000); Socket socket = serverSocket.accept(); BufferedReader br = new BufferedReader( new InputStreamReader(socket.getInputStream()) ); // 2. 메시지 받기 스레드 new Thread(() -> { while (true) { try { String requestMsg = br.readLine(); System.out.println("클라이언트로부터 받은 메시지 : " + requestMsg); } catch (Exception e) { e.printStackTrace(); } }}).start(); } catch (IOException e) { throw new RuntimeException(e); } } }
2
package ex17.multi; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.nio.charset.Charset; import java.util.Scanner; public class Server { public static void main(String[] args) { try { // 1. 소켓과 버퍼 만들기 ServerSocket serverSocket = new ServerSocket(20000); Socket socket = serverSocket.accept(); PrintWriter pw = new PrintWriter(socket.getOutputStream(), true); Scanner sc = new Scanner(System.in); BufferedReader br = new BufferedReader( new InputStreamReader(socket.getInputStream()) ); // 2. 메시지 받기 스레드 new Thread(() -> { while (true) { try { String requestMsg = br.readLine(); System.out.println("클라이언트로부터 받은 메시지 : " + requestMsg); } catch (Exception e) { e.printStackTrace(); } }}).start(); // 3. 메시지 전송 스레드 new Thread(() -> { while (true) { String keyboardMsg = sc.nextLine(); pw.println(keyboardMsg); } }).start(); } catch (IOException e) { throw new RuntimeException(e); } } }
 
💡
클라이언트
1
package ex17.multi; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import java.util.Scanner; public class Client { public static void main(String[] args) { try { // 1. 소켓과 버퍼 만들기 Socket socket = new Socket("localhost", 20000); Scanner sc = new Scanner(System.in); PrintWriter pw = new PrintWriter(socket.getOutputStream(), true); // 2. 메시지 전송 스레드 new Thread(() -> { while (true) { String keyboardMsg = sc.nextLine(); pw.println(keyboardMsg); } }).start(); // 3. 메시지 읽기 스레드 } catch (IOException e) { throw new RuntimeException(e); } } }
2
package ex17.multi; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import java.util.Scanner; public class Client { public static void main(String[] args) { try { // 1. 소켓과 버퍼 만들기 Socket socket = new Socket("192.168.0.44", 10000); Scanner sc = new Scanner(System.in); PrintWriter pw = new PrintWriter(socket.getOutputStream(), true); BufferedReader br = new BufferedReader( new InputStreamReader(socket.getInputStream()) ); // 2. 메시지 전송 스레드 new Thread(() -> { while (true) { String keyboardMsg = sc.nextLine(); pw.println(keyboardMsg); } }).start(); // 3. 메시지 읽기 스레드 new Thread(() -> { while (true) { try { String serverMsg = br.readLine(); System.out.println("서버로부터 받은 메시지 : " + serverMsg); } catch (Exception e) { e.printStackTrace(); } } }).start(); } catch (IOException e) { throw new RuntimeException(e); } } }
Share article

khh