새소식

인기 검색어

개인공부/Java

Unicast 프로그램

  • -

UniClient.java

import java.io.*;
import java.net.*;

public class UniClient {
    private String ip;
    private int port;
    private String str;

    MsgListener msgListener = null;
    msgWriter msgWriter = null;

    public UniClient(String ip, int port) throws IOException {
        this.ip = ip;
        this.port = port;

        Socket tcpSocket = getSocket();

        msgListener = new MsgListener(tcpSocket);
        msgWriter = new msgWriter(tcpSocket);
        msgListener.start();
        msgWriter.start();


    }

    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 UniClient("localhost", 12345);

    }

}

class MsgListener extends Thread {
    Socket socket;
    private String str;

    MsgListener(Socket _s) {
        this.socket = _s;
    }

    public void run() {
        try {
            InputStream is_socket = socket.getInputStream();
            BufferedReader bufferR = new BufferedReader(
                    new InputStreamReader(is_socket));

            while (true) {
                str = bufferR.readLine();
                if (str.equals("bye")) {
                    System.out.println("소켓통신 종료하겠습니다.");
                    break;
                } else {
                    System.out.println("Echo Result : " + str);
                }


            }

        } catch (Exception e) {
            System.out.println("err");
        }
    }


}

class msgWriter extends Thread {
    Socket socket;
    private String str;
    BufferedReader file;

    msgWriter(Socket _s) {
        this.socket = _s;
    }

    public void run() {
        try {
            OutputStream os_socket = socket.getOutputStream();
            BufferedWriter bufferW = new BufferedWriter(
                    new OutputStreamWriter(os_socket));

            while (true) {
                Thread.sleep(1000);
                System.out.print("입력 : ");
                file = new BufferedReader(
                        new InputStreamReader(System.in));
                str = file.readLine();
//			str += System.getProperty("line.separator"); 구버전용 개행문자
                str += System.lineSeparator();

                bufferW.write(str);
                bufferW.flush();
            }

        } catch (Exception e) {
            System.out.println("err");
        }
    }
}

UniServer.java

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class UniServer {
    ServerSocket ss = null;
    Client cients;

    public static void main(String[] args) {
        UniServer server = new UniServer();
        Socket socket = null;
        try {
            server.ss = new ServerSocket(12345);
            System.out.println("Server > Server Socket is Created... ");
            while (true) {
                socket = server.ss.accept();
                UniChat c = new UniChat(socket);
                c.start();

            }

        } catch (IOException e) {
            System.out.println("Server > 입출력예외 발생");
        }

    }

}

class UniChat extends Thread {
    Socket socket;
    private BufferedReader bufferR;
    private BufferedWriter bufferW;
    private InputStream is;
    private OutputStream os;

    UniChat(Socket _socket) {
        this.socket = _socket;
    }

    public void run() {
        try {
            is = socket.getInputStream();
            os = socket.getOutputStream();
            while (true) {
                bufferR = new BufferedReader(new InputStreamReader(is));
                bufferW = new BufferedWriter(new OutputStreamWriter(os));
                String message = bufferR.readLine();
                System.out.println("수신메시지 : " + message);
                message += System.getProperty("line.separator");
                bufferW.write(message);
                bufferW.flush();

            }
        } catch (Exception e) {
            System.out.println("에러");
        }

    }
}

'개인공부 > Java' 카테고리의 다른 글

java 소켓 멀티캐스트 && JFrame  (0) 2022.09.06
쿠키와 세션  (0) 2022.09.04
Java 입출력(I/O), 스트림(Stream), 버퍼(Buffer) 개념  (1) 2022.09.02
URL GET POST 방식  (1) 2022.09.02
절대경로와 상대경로  (0) 2022.09.02
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.