import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
//客户端
public class ReceiverThread_A extends Thread {
private Socket socket;
private BufferedReader br;
private PrintStream ps;
private String ReadLine = "";
public ReceiverThread_A() {
try {
socket = new Socket(InetAddress.getLocalHost(), 5698);
br = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
ps = new PrintStream(socket.getOutputStream());
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public PrintStream getPrintStream() {
return ps;
}
@Override
public void run() {
try {
while ((ReadLine = br.readLine()) != null) {
if (ReadLine == "END") {
break;
}
System.out.println(ReadLine);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.io.PrintStream;
public class SenderThread_A extends Thread {
private PrintStream ps;
private String Message = "";
private boolean isRunning;
public SenderThread_A(PrintStream ps) {
this.ps = ps;
isRunning = true;
}
public synchronized void sendMessage(String Message) {
this.Message = Message;
notify();
}
public boolean isRunning() {
return isRunning;
}
public void setRunning(boolean isRunning) {
this.isRunning = isRunning;
notify();
}
@Override
public synchronized void run() {
while (isRunning) {
if (Message == "") {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if (Message == "") {
break;
} else {
ps.println(Message);
ps.flush();
}
Message = "";
}
}
}
服务器端
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; public class ReceiverThread_B extends Thread { private ServerSocket serverSocket; private Socket socket; private BufferedReader br; private PrintStream ps; private String ReadLine = ""; public ReceiverThread_B() { try { serverSocket = new ServerSocket(5698); } catch (IOException e) { e.printStackTrace(); } } public PrintStream getPrintStream() { return ps; } @Override public void run() { try { socket = serverSocket.accept(); br = new BufferedReader(new InputStreamReader( socket.getInputStream())); ps = new PrintStream(socket.getOutputStream()); } catch (IOException e1) { e1.printStackTrace(); } try { while ((ReadLine = br.readLine()) != null) { if (ReadLine == "END") { break; } System.out.println(ReadLine); } } catch (IOException e) { e.printStackTrace(); } } }
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; public class ReceiverThread_B extends Thread { private ServerSocket serverSocket; private Socket socket; private BufferedReader br; private PrintStream ps; private String ReadLine = ""; public ReceiverThread_B() { try { serverSocket = new ServerSocket(5698); } catch (IOException e) { e.printStackTrace(); } } public PrintStream getPrintStream() { return ps; } @Override public void run() { try { socket = serverSocket.accept(); br = new BufferedReader(new InputStreamReader( socket.getInputStream())); ps = new PrintStream(socket.getOutputStream()); } catch (IOException e1) { e1.printStackTrace(); } try { while ((ReadLine = br.readLine()) != null) { if (ReadLine == "END") { break; } System.out.println(ReadLine); } } catch (IOException e) { e.printStackTrace(); } } }