Server Class
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 | import java.io.*; import java.net.*; public class UnicastServer{ private ServerSocket serverS; public UnicastServer(int port){ try{ serverS = new ServerSocket(port); }catch(IOException ioe){ ioe.printStackTrace(); System.exit(0); } UnicastServerThread ust=null; while(true){ System.out.println("클라이언트 대기중"); Socket s=null; try{ s = serverS.accept(); }catch(IOException ioe){ ioe.printStackTrace(); } System.out.println("client ip : "+ s.getInetAddress().getHostAddress()); ust = new UnicastServerThread(s); Thread t = new Thread(ust); t.start(); } } public static void main(String[] args){ new UnicastServer(3000); } } |
ServerThread Class
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | import java.net.*; import java.io.*; public class UnicastServerThread implements Runnable{ private Socket socket; private BufferedReader bufferR; private BufferedWriter bufferW; private InputStream is; private OutputStream os; private String message; private BufferedReader file=null; public UnicastServerThread(Socket socket){ this.socket = socket; } public void run(){ boolean isStop = false; try{ is = socket.getInputStream(); bufferR = new BufferedReader( new InputStreamReader(is)); os = socket.getOutputStream(); bufferW = new BufferedWriter( new OutputStreamWriter(os)); }catch(IOException ioe){ isStop=true; } try{ while(!isStop){ String message = bufferR.readLine(); if(message.equals("exit")) isStop = true; System.out.println("received message : "+ message); message += System.getProperty("line.separator"); bufferW.write(message); bufferW.flush(); System.out.printf("message : "); file = new BufferedReader(new InputStreamReader(System.in)); message = file.readLine(); message += System.getProperty("line.separator"); bufferW.write(message); bufferW.flush(); message = bufferR.readLine(); }//while end }catch(IOException ioe){ System.out.println("클라이언트가 강제로 " +"종료되었습니다."); isStop=true; }finally{ try{ if(bufferR != null) bufferR.close(); if(bufferW != null) bufferW.close(); if(socket != null) socket.close(); if(file !=null) file.close(); }catch(IOException ioe){ ioe.printStackTrace(); } }//finally end }//run end } |
Client Class
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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | import java.io.*; import java.net.*; public class UnicastClient { private String ip; private int port; private String message; private BufferedReader file = null; private BufferedWriter bufferW = null; private BufferedReader bufferR = null; public UnicastClient(String ip, int port) throws IOException { this.ip = ip; this.port = port; boolean isStop = false; Socket tcpSocket = getSocket(); OutputStream os = tcpSocket.getOutputStream(); InputStream is = tcpSocket.getInputStream(); bufferW = new BufferedWriter(new OutputStreamWriter(os)); bufferR = new BufferedReader(new InputStreamReader(is)); while (!isStop) { System.out.print("message : "); file = new BufferedReader(new InputStreamReader(System.in)); message = file.readLine(); message += System.getProperty("line.separator"); bufferW.write(message); bufferW.flush(); message = bufferR.readLine(); String message = bufferR.readLine(); if (message.equals("exit")) isStop = true; message += System.getProperty("line.separator"); bufferW.write(message); bufferW.flush(); if (message.equals("exit")) { isStop = true; System.out.println("종료되었습니다."); } else { System.out.println("Received message : " + message); } } tcpSocket.close(); bufferW.close(); bufferR.close(); file.close(); } public Socket getSocket() { Socket tcpSocket = null; try { tcpSocket = new Socket(ip, port); } catch (IOException ioe) { ioe.printStackTrace(); System.exit(0); } return tcpSocket; } public static void main(String[] args) throws IOException { new UnicastClient("localhost", 3000); } } |
'code > JAVA' 카테고리의 다른 글
| eclipse(이클립스) 단축키 (0) | 2017.04.20 |
|---|---|
| [JAVA] Stack&Queue (추상클래스, 예외처리 포함) (0) | 2017.04.20 |
| [JAVA] 성적처리 Has~a 관계 (0) | 2017.04.20 |
| [JAVA] 성적처리 string 형을 변환, 래퍼 클래스 (0) | 2017.04.20 |
| [JAVA] 사칙연산계산기 (0) | 2017.04.20 |