// 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) {}
}
}
}