package demo.network.tcp.other;
import java.io.*;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
class TransClient implements Runnable {
private Socket socket;
TransClient(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
try {
PrintWriter out = new PrintWriter(socket.getOutputStream());
String line = null;
BufferedReader bufIn = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while ((line = bufr.readLine()) != null) {
out.println(line);
out.flush();
System.out.println(bufIn.readLine());
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
bufr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
class TransServer implements Runnable {
private ServerSocket serverSocket;
TransServer(ServerSocket serversocket) {
this.serverSocket = serversocket;
}
@Override
public void run() {
Socket socket = null;
try {
socket = serverSocket.accept();
BufferedReader bufr = new BufferedReader(new InputStreamReader(socket.getInputStream()));
OutputStream out = socket.getOutputStream();
String line = null;
while ((line = bufr.readLine()) != null) {
System.out.println(socket.getInetAddress().getHostAddress() + ": " + line);
out.write(line.toUpperCase().getBytes());
out.write("\n".getBytes());
out.flush();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (socket != null)
socket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
class TextTrans {
public static void main(String[] args) throws IOException {
TransServer ts = new TransServer(new ServerSocket(8080));
TransClient tc = new TransClient(new Socket(InetAddress.getLocalHost().getHostAddress(), 8080));
new Thread(ts).start();
new Thread(tc).start();
}
}