在Java中使用Socket
,
public class Server {
private static ServerSocket server;
private static int port = 9876;
static Socket p1 = null;
static Socket p2 = null;
public static void main(String args[]) throws IOException,ClassnotFoundException{
server = new ServerSocket(port);
Thread p1t = new Thread(new Runnable() {
@Override
public void run() {
try {
System.out.println("[Server] Waiting for connection");
p1 = server.accept();
System.out.println("[Server] Client connected");
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(p1.getOutputStream()));
BufferedReader in = new BufferedReader(new InputStreamReader(p1.getInputStream()));
String msg = String.valueOf(in.readLine());
System.out.println(msg);
out.write(msg);
} catch (Exception e) {
e.printStackTrace();
}
}
});
p1t.start();
}
}
和
public class Client {
public static void main(String[] args) throws UnknownHostException,IOException,ClassnotFoundException,InterruptedException{
Socket socket = new Socket(Inetaddress.getLocalHost().getHostName(),9876);
if(socket.isConnected()) {
System.out.println("[Client] Connected");
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
new Thread(new Runnable() {
@Override
public void run() {
while(true) {
try {
System.out.println(in.readLine());
} catch (IOException e) {
e.printStackTrace();
}
}
}
}).start();
while(true) {
Scanner s = new Scanner(System.in);
out.write(s.nextLine());
}
}
}
}
客户端应该向服务器发送消息,服务器应该将该消息转发回客户端;但是BufferedReader
和Client
的{{1}}没有读取任何已发送的内容,或者Server
和BufferedWriter
的{{1}}没有发送任何内容任何东西。
我还尝试了在两个类中都使用Client
手动发送文本。
在这种情况下我怎么了?