몰입형

[몰입형] 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