【发布时间】:2021-07-20 22:59:38
【问题描述】:
我希望我的客户端向服务器发送消息,服务器将收到的消息发回 但是我的客户有一个问题,因为它永远不会到达 close() 语句,因为 readLine() 因此它只是挂在那里,我该怎么做才能让它工作?
服务器:
import java.net.*;
import java.io.*;
public class Server{
public static void main(String[] args){
try{
ServerSocket server=new ServerSocket(3535);
while(true){
Socket socket=server.accept();
BufferedReader in =new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out=new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
String message=in.readLine();
System.out.println(message);
out.print(message);
out.flush();
in.close();
out.close();
socket.close();
} }
catch(Exception e){
System.out.println(e);
e.printStackTrace();
}
}
}
客户:
import java.net.*;
import java.io.*;
public class Client{
public static void main(String[] args){
try{
BufferedReader user_in =new BufferedReader(new InputStreamReader(System.in));
while(true){
Socket socket=new Socket("localhost",3535);
BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out=new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
out.print(user_in.readLine());
out.flush();
String message_from_server = in.readLine();
System.out.println("Message from server : " + message_from_server);
out.close();
in.close();
socket.close();
}
}
catch(Exception e){
System.out.println(e);
e.printStackTrace();
}
}
}
【问题讨论】:
-
永远不会接近是什么意思
-
我当前在客户端的代码,它接受用户输入然后将其发送到服务器,然后我调用 in.readLine() 因为我想从服务器接收消息,但正因为如此打电话我永远不会关闭 BufferederReader 或 PrintWriter 并且它还没有发送消息。我不知道原因,但是当我删除 in.readLine() 时没有问题
-
不要破坏自己的帖子。如果您想隐藏您的问题,请将其删除。