02 TCPIP 20 1 TCPIP 1 1 2

  • Slides: 32
Download presentation

02. TCP/IP 통신 프로그램의 작성 방법 클라이언트/서버 프로그램 작성 [예제 20 -1] TCP/IP로 통신하는

02. TCP/IP 통신 프로그램의 작성 방법 클라이언트/서버 프로그램 작성 [예제 20 -1] TCP/IP로 통신하는 클라이언트 프로그램과 서버 프로그램 (1) 클라이언트 프로그램 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 import java. io. *; import java. net. *; class Client. Example 1 { public static void main(String[] args) { Socket socket = null; try { socket = new Socket(“###. ###”, 9000); 소켓을 생성합니다 Input. Stream in = socket. get. Input. Stream(); Output. Stream out = socket. get. Output. Stream(); String str = "Hello, Server"; 데이터를 송신합니다 out. write(str. get. Bytes()); byte arr[] = new byte[100]; 수신된 데이터를 출력합니다 in. read(arr); System. out. println(new String(arr)); } catch (Exception e) { System. out. println(e. get. Message()); } finally { try { socket. close(); 소켓을 닫습니다 } catch (Exception e) { } } 서버 프로그램 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 import java. io. *; import java. net. *; class Server. Example 1 { public static void main(String[] args) { Server. Socket server. Socket = null; Socket socket = null; try { server. Socket = new Server. Socket(9000); 서버 소켓을 생성합니다 socket = server. Socket. accept(); 연결 요청이 오면 소켓을 생성립니다 Input. Stream in = socket. get. Input. Stream(); Output. Stream out = socket. get. Output. Stream(); byte arr[] = new byte[100]; in. read(arr); 수신된 데이터를 출력합니다 System. out. println(new String(arr)); String str = "Hello, Client"; 데이터를 송신합니다 out. write(str. get. Bytes()); } catch (Exception e) { System. out. println(e. get. Message()); } finally { try { socket. close(); 소켓을 닫습니다 } catch (Exception ignored) { } try { server. Socket. close(); 서버 소켓을 닫습니다 } catch (Exception ignored) { } }

02. TCP/IP 통신 프로그램의 작성 방법 클라이언트/서버 프로그램 작성 [예제 20 -2] TCP/IP로 통신하는

02. TCP/IP 통신 프로그램의 작성 방법 클라이언트/서버 프로그램 작성 [예제 20 -2] TCP/IP로 통신하는 클라이언트 프로그램과 서버 프로그램 (2) 서버 프로그램 클라이언트 프로그램 1 import java. io. *; 2 import java. net. *; 3 class Client. Example 2 { 4 public static void main(String[] args) { 5 Socket socket = null; 6 try { socket = new Socket(“###. ###", 9000); 7 8 Buffered. Reader reader = new Buffered. Reader( new Input. Stream. Reader(socket. get. Input. Stream())); 9 Print. Writer writer = new Print. Writer(socket. get. Output. Stream()); 10 writer. println("Hello, Server"); 데이터를 송신합니다 11 writer. flush(); 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 } String str = reader. read. Line(); System. out. println(str); } catch (Exception e) { System. out. println(e. get. Message()); } finally { try { socket. close(); } catch (Exception ignored) { } } } 수신된 데이터를 출력합니다 1 import java. io. *; 2 import java. net. *; 3 class Server. Example 2 { 4 public static void main(String[] args) { 5 Server. Socket server. Socket = null; 6 Socket socket = null; 7 try { 8 server. Socket = new Server. Socket(9000); 9 socket = server. Socket. accept(); 10 Buffered. Reader reader = new Buffered. Reader( new Input. Stream. Reader(socket. get. Input. Stream())); 11 Print. Writer writer = new Print. Writer(socket. get. Output. Stream()); 12 String str = reader. read. Line(); 수신된 데이터를 출력합니다 13 System. out. println(str); 14 writer. println("Hello, Client"); 데이터를 송신합니다 15 writer. flush(); 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 } } catch (Exception e) { System. out. println(e. get. Message()); } finally { try { socket. close(); } catch (Exception ignored) { } try { server. Socket. close(); } catch (Exception ignored) { } } 실행 결과는 [예제 20 -1]과 동일 }

02. TCP/IP 통신 프로그램의 작성 방법 송신과 수신을 동시에 하는 프로그램 [예제 20 -3]

02. TCP/IP 통신 프로그램의 작성 방법 송신과 수신을 동시에 하는 프로그램 [예제 20 -3] 일대일 채팅 프로그램 – 클라이언트 프로그램 1 import java. net. *; 2 class Client. Example 3 { 3 public static void main(String[] args) { 4 Socket socket = null; 5 try { socket = new Socket(“###. ###", 9001); 6 7 Thread thread 1 = new Sender. Thread(socket); 8 Thread thread 2 = new Receiver. Thread(socket); 9 thread 1. start(); 10 thread 2. start(); 11 } 12 catch (Exception e) { 13 System. out. println(e. get. Message()); 14 } 15 } 16 } 메시지를 송신하는 쓰레드 클래스 메시지를 수신하는 쓰레드 클래스 1 import java. io. *; 2 import java. net. *; 3 class Sender. Thread extends Thread { 4 Socket socket; 5 Sender. Thread(Socket socket) { 6 this. socket = socket; 7 } 8 public void run() { 9 try { 10 Buffered. Reader reader = new Buffered. Reader( new Input. Stream. Reader(System. in)); 11 Print. Writer writer = new Print. Writer(socket. get. Output. Stream()); 12 while (true) { 13 String str = reader. read. Line(); 14 if (str. equals("bye")) 15 break; 16 writer. println(str); 17 writer. flush(); 18 } 19 } 20 catch (Exception e) { 21 System. out. println(e. get. Message()); 22 } 23 finally { 24 try { 25 socket. close(); 26 } 27 catch (Exception ignored) { 28 } 29 } 30 } 31 } 1 import java. io. *; 2 import java. net. *; 3 class Receiver. Thread extends Thread { 4 Socket socket; 5 Receiver. Thread(Socket socket) { 6 this. socket = socket; 7 } 8 public void run() { 9 try { 10 Buffered. Reader reader = new Buffered. Reader( new Input. Stream. Reader(socket. get. Input. Stream())); 11 while (true) { 12 String str = reader. read. Line(); 13 if (str == null) 14 break; 15 System. out. println("수신>" + str); 16 } 17 } 18 catch (Exception e) { 19 System. out. println(e. get. Message()); 20 } 21 } 22 }

02. TCP/IP 통신 프로그램의 작성 방법 송신과 수신을 동시에 하는 프로그램 [예제 20 -4]

02. TCP/IP 통신 프로그램의 작성 방법 송신과 수신을 동시에 하는 프로그램 [예제 20 -4] 일대일 채팅 프로그램 – 서버 프로그램 클라이언트 프로그램 1 import java. net. *; 2 class Server. Example 3 { 3 public static void main(String[] args) { 4 Server. Socket server. Socket = null; 5 Socket socket = null; 6 try { 7 server. Socket = new Server. Socket(9001); 8 socket = server. Socket. accept(); 9 Thread thread 1 = new Sender. Thread(socket); 10 Thread thread 2 = new Receiver. Thread(socket); 11 thread 1. start(); 12 thread 2. start(); 13 } 14 catch (Exception e) { 15 System. out. println(e. get. Message()); 16 } 17 finally { 18 try { 19 server. Socket. close(); 20 } 21 catch (Exception ignored) { 22 } 23 } 24 } 25 } 메시지를 송신하는 쓰레드 클래스 메시지를 수신하는 쓰레드 클래스 1 import java. io. *; 2 import java. net. *; 3 class Sender. Thread extends Thread { 4 Socket socket; 5 Sender. Thread(Socket socket) { 6 this. socket = socket; 7 } 8 public void run() { 9 try { 10 Buffered. Reader reader = new Buffered. Reader( new Input. Stream. Reader(System. in)); 11 Print. Writer writer = new Print. Writer(socket. get. Output. Stream()); 12 while (true) { 13 String str = reader. read. Line(); 14 if (str. equals("bye")) 15 break; 16 writer. println(str); 17 writer. flush(); 18 } 19 } 20 catch (Exception e) { 21 System. out. println(e. get. Message()); 22 } 23 finally { 24 try { 25 socket. close(); 26 } 27 catch (Exception ignored) { 28 } 29 } 30 } 31 } 1 import java. io. *; 2 import java. net. *; 3 class Receiver. Thread extends Thread { 4 Socket socket; 5 Receiver. Thread(Socket socket) { 6 this. socket = socket; 7 } 8 public void run() { 9 try { 10 Buffered. Reader reader = new Buffered. Reader( new Input. Stream. Reader(socket. get. Input. Stream())); 11 while (true) { 12 String str = reader. read. Line(); 13 if (str == null) 14 break; 15 System. out. println("수신>" + str); 16 } 17 } 18 catch (Exception e) { 19 System. out. println(e. get. Message()); 20 } 21 } 22 }

02. TCP/IP 통신 프로그램의 작성 방법 여러 명이 참여하는 채팅 프로그램 [예제 20 -5]

02. TCP/IP 통신 프로그램의 작성 방법 여러 명이 참여하는 채팅 프로그램 [예제 20 -5] 여러 사용자가 함께 채팅하는 프로그램 – 서버 프로그램 (미완성) 클라이언트 프로그램 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 import java. io. *; import java. net. *; class Client. Example 1 { public static void main(String[] args) { Socket socket = null; try { socket = new Socket(“###. ###”, 9000); 소켓을 생성합니다 Input. Stream in = socket. get. Input. Stream(); Output. Stream out = socket. get. Output. Stream(); String str = "Hello, Server"; 데이터를 송신합니다 out. write(str. get. Bytes()); byte arr[] = new byte[100]; 수신된 데이터를 출력합니다 in. read(arr); System. out. println(new String(arr)); } catch (Exception e) { System. out. println(e. get. Message()); } finally { try { socket. close(); 소켓을 닫습니다 } catch (Exception e) { } } import java. net. *; class Server. Example { public static void main(String[] args) { Server. Socket server. Socket = null; try { server. Socket = new Server. Socket(9002); while (true) { Socket socket = server. Socket. accept(); Thread thread = new Per. Clinet. Thread(socket); thread. start(); } } catch (Exception e) { System. out. println(e. get. Message()); } } }

02. TCP/IP 통신 프로그램의 작성 방법 여러 명이 참여하는 채팅 프로그램 [예제 20 -6]

02. TCP/IP 통신 프로그램의 작성 방법 여러 명이 참여하는 채팅 프로그램 [예제 20 -6] 여러 사용자가 함께 채팅하는 프로그램 – 서버 프로그램 (완성) import java. io. *; import java. net. *; import java. util. *; class Per. Clinet. Thread extends Thread { static List<Print. Writer> list = Collections. synchronized. List(new Array. List<Print. Writer>()); Socket socket; Print. Writer writer; Per. Clinet. Thread(Socket socket) { this. socket= socket; try { writer = new Print. Writer(socket. get. Output. Stream()); list. add(writer); } catch (Exception e) { System. out. println(e. get. Message()); } } public void run() { String name = null; try { Buffered. Reader reader = new Buffered. Reader( new Input. Stream. Reader(socket. get. Input. Stream())); name = reader. read. Line(); send. All("#" + name + "님이 들어오셨습니다"); while (true) { String str = reader. read. Line(); if (str == null) break; send. All(name + ">" + str); } } catch (Exception e) { System. out. println(e. get. Message()); } finally { list. remove(writer); send. All("#" + name + "님이 나가셨습니다"); try { socket. close(); } catch (Exception ignored) { } } } private void send. All(String str) { for (Print. Writer writer : list) { writer. println(str); writer. flush(); } } }

02. TCP/IP 통신 프로그램의 작성 방법 여러 명이 참여하는 채팅 프로그램 [예제 20 -7]

02. TCP/IP 통신 프로그램의 작성 방법 여러 명이 참여하는 채팅 프로그램 [예제 20 -7] 여러 사용자가 함께 채팅하는 프로그램 – 클라이언트 프로그램 1 import java. net. *; 2 class Client. Example 4 { 3 public static void main(String[] args) { 4 if (args. length != 1) { 5 System. out. println( "Usage: java Client. Example 4 <user-name>"); 6 return; 7 } 8 try { Socket socket = new Socket(“###. ###", 9 9002); Thread thread 1 = new Sender. Thread(socket, 10 args[0]); Thread thread 2 = new Receiver. Thread(socket); 11 12 thread 1. start(); 13 thread 2. start(); 14 } 15 catch (Exception e) { 16 System. out. println(e. get. Message()); 17 } 18 } 19 } 메시지를 송신하는 쓰레드 클래스 메시지를 수신하는 쓰레드 클래스 1 import java. net. *; 2 import java. io. *; 3 class Sender. Thread extends Thread { 4 Socket socket; 5 String name; 6 Sender. Thread(Socket socket, String name) { 7 this. socket = socket; 8 this. name = name; 9 } 10 public void run() { 11 try { 12 Buffered. Reader reader = new Buffered. Reader( new Input. Stream. Reader(System. in)); 13 Print. Writer writer = new Print. Writer(socket. get. Output. Stream()); 14 writer. println(name); 15 writer. flush(); 16 while (true) { 17 String str = reader. read. Line(); 18 if (str. equals("bye")) 19 break; 20 writer. println(str); 21 writer. flush(); 22 } 23 } 24 catch (Exception e) { 25 System. out. println(e. get. Message()); 26 } 27 finally { 28 try { 29 socket. close(); 30 } 31 catch (Exception ignored) { 32 } 33 } 34 } 35 } 1 import java. io. *; 2 import java. net. *; 3 class Receiver. Thread extends Thread { 4 Socket socket; 5 Receiver. Thread(Socket socket) { 6 this. socket = socket; 7 } 8 public void run() { 9 try { 10 Buffered. Reader reader = new Buffered. Reader( new Input. Stream. Reader(socket. get. Input. Stream())); 11 while (true) { 12 String str = reader. read. Line(); 13 if (str == null) 14 break; 15 System. out. println(str); 16 } 17 } 18 catch (IOException e) { 19 System. out. println(e. get. Message()); 20 } 21 } 22 }