본문 바로가기

카테고리 없음

[JAVA]Unicast(유니캐스트)

// UnicastClient

package unicastExam;

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

public class UnicastClient {

	private String ip;
	private int port;
	private String str;
	BufferedReader file;
	private BufferedWriter bufferW;
	private BufferedReader bufferR;

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

		boolean isStop = false;
		Socket tcpSocket = getSocket();
		
		OutputStream os_socket = tcpSocket.getOutputStream();
		InputStream is_socket = tcpSocket.getInputStream();

		bufferW = new BufferedWriter(new OutputStreamWriter(os_socket));
		bufferR = new BufferedReader(new InputStreamReader(is_socket));
		
		while (!isStop) {

			System.out.print("input : ");

			file = new BufferedReader(new InputStreamReader(System.in));

			str = file.readLine();

			str += System.getProperty("line.separator");
			bufferW.write(str);
			bufferW.flush();
			str = bufferR.readLine();

			if (str.equals("exit")) {

				isStop = true;
				System.out.println("Exit");

			} else {

				System.out.println("Echo Result : " + str);

			}

		}

		file.close();
		bufferW.close();
		bufferR.close();
		tcpSocket.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", 5000);

	}

}

// UnicastServer

package unicastExam;

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

public class UnicastServer {

	private UnicastServerThread ust;
	private Socket socket;

	public UnicastServer(){
		// TODO Auto-generated constructor stub
		
		ServerSocket serverS = null;
		try {
			serverS = new ServerSocket(5000);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		boolean c = true;
		
		while (c) {
			
			System.out.println("Server is ready");
			try {
				socket = serverS.accept();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			System.out.println("Client IP Address : " + socket.getInetAddress().getHostAddress());
			ust = new UnicastServerThread(this);
			
			Thread t = new Thread(ust);
			t.start();
			
		}

	}
	
	public Socket getSocket() {
		
		return this.socket;
		
	}

	public static void main(String[] args) throws IOException {

		new UnicastServer();
		
	}

}

// UnicastServerThread

package unicastExam;

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

public class UnicastServerThread implements Runnable {

	private Socket socket;
	private UnicastServer us;
	private BufferedReader bufferR;
	private BufferedWriter bufferW;
	private InputStream is;
	private OutputStream os;
	BufferedReader file;
	private String str;

	public UnicastServerThread(UnicastServer us) {
		// TODO Auto-generated constructor stub

		this.us = us;
		socket = us.getSocket();

	}

	@Override
	public void run() {
		// TODO Auto-generated method stub

		boolean isStop = false;

		try {

			is = socket.getInputStream();
			os = socket.getOutputStream();

			bufferR = new BufferedReader(new InputStreamReader(is));
			bufferW = new BufferedWriter(new OutputStreamWriter(os));

		} catch (IOException ioe) {

			ioe.printStackTrace();

		}

		try {

			while (!isStop) {

				String message = bufferR.readLine();
				
				if (message.equals("exit")) {
					
					isStop = true;
					message = "exit";
					message += System.getProperty("line.separator");

					bufferW.write(message);
					bufferW.flush();
					continue;
					
				}
				
				System.out.println("Received Message : " + message);
				
				System.out.print("input : ");

				file = new BufferedReader(new InputStreamReader(System.in));

				str = file.readLine();

				str += System.getProperty("line.separator");
				bufferW.write(str);
				bufferW.flush();

			}
			
		} catch (IOException ioe) {

		} finally {

			System.out.println("Thread End!");
				try {
					bufferR.close();
					bufferW.close();
					socket.close();
				} catch (IOException ioe) {}

		}

	}

}