ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [몰입형] Unicast(유니캐스트)
    몰입형 2022. 9. 3. 16:32

     Unicast(유니캐스트)

     - 송신 노드 하나가 수신노드 하나에 데이터를 전송하는 1:1 통신방식

    - 가장 많이 사용되는 트래픽

     

     

     

    다음 코드는 Server와 Client가 1:1 방식으로 통식하는 Unicast 예시

     

    1) Server

    package Uni;
    
    import java.net.*;
    
    public class UniServer { 
        public static void main(String[] args) {
    
            ServerSocket serverSocket = null;
            Socket socket = null;
            try {
                serverSocket = new ServerSocket(9000);
                socket = serverSocket.accept();
    
                Thread thread1 = new SenderThread(socket);
                Thread thread2 = new ReceiverThread(socket);
                thread1.start();
                thread2.start();
            } catch (Exception e) {
                System.out.println(e.getMessage());
            } finally {
                try {
                    serverSocket.close();
                } catch (Exception ignored) {
                }
            }
        }
    }

     

    2) Client

    package Uni;
    import java.net.*;
    
    class UiClient{
        public static void main(String[] args) {
            Socket socket = null;
            try{
                socket = new Socket("127.0.0.1",9000);
                Thread thread1 = new SenderThread(socket);
                Thread thread2 = new ReceiverThread(socket);
                thread1.start();
                thread2.start();
            }catch(Exception e){
                System.out.println(e.getMessage());
            }
        }
    }

     

    3) Thread(Recieve)

    package Uni;
    
    import java.io.*;
    import java.net.*;
    
    public class ReceiverThread extends Thread {
        Socket socket;
        public ReceiverThread(Socket socket) {
            this.socket = socket;
        }
        public void run() {
            try{
                BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                while (true) {
                    String str = reader.readLine();
                    if(str == null)
                        break;
                    System.out.println("수신>" + str);
                }
            }catch(IOException e){
                System.out.println(e.getMessage());
            }
        }
    }

     

    4)Thread(Send)

    package Uni;
    
    import java.io.*;
    import java.net.Socket;
    
    public class SenderThread extends Thread {
        Socket socket;
    
        public SenderThread(Socket socket) {
            this.socket = socket;
        }
    
        public void run() {
            try {
                BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
                PrintWriter writer = new PrintWriter(socket.getOutputStream());
                writer.flush();
    
                while (true) {
                    String str = reader.readLine();
                    if (str.equals("bye"))
                        break;
                    writer.println(str);
                    writer.flush();
                }
    
            } catch (Exception e) {
                System.out.println(e.getMessage());
            } finally {
                try {
                    socket.close();
                } catch (Exception ignored) {
    
                }
            }
        }
    }
    728x90

    '몰입형' 카테고리의 다른 글

    [몰입형] Multicast  (0) 2022.09.06
    [몰입형] 쿠키와 세션  (0) 2022.09.03
    [몰입형] 절대경로와 상대경로  (0) 2022.09.03
    [몰입형] OSI 7계층  (0) 2022.09.03
    [몰입형] HTTP Method  (0) 2022.09.03
Designed by Tistory.