我是一个初学者程序员,所以这可能很明显,我忽略了答案。但是关于这个问题。
我有一个由两部分组成的程序(它比这个例子复杂一点,但情况是一样的)。该程序在客户端和服务器之间触发了多条消息。我在服务器端有一个 PrintWriter 来向客户端发送消息,在客户端上,我有一个 BufferedReader 来读取发送的消息。运行此示例时,我得到两行作为输出。第一个消息是两个消息,第二个是 NULL。我想知道是否有一种方法可以基本上停止服务器,直到我准备好接收第二条消息,这样我就可以在发送第二条消息之前在客户端做一些事情。
我希望不要使用Thread.Sleep
,因为我宁愿服务器等到客户端说它准备好。
这是客户端:
public class Client{
public void run(){
Socket socket = null;
InputStream in = null;
BufferedReader reader = null;
try{
socket = new socket("LocalHost",1234);
in = socket.getInputStream();
reader = new BufferedReader(new InputStreamReader(in));
}
String messageFromServer = "";
try{
messageFromServer=reader.readLine();
}
System.out.println(messageFromServer);
String messageFromServer = "";
try{
messageFromServer=reader.readLine();
}
System.out.println(messagefromServer);
//close everything
}
}
这是服务器:
public class Server{
public void run(){
ServerSocket server = null;
Socket client = null;
try{
server = new ServerSocket(1234);
client = server.accept();
}
PrintWriter writer = null;
OutputStream out = null;
try{
out = client.getOutputStream();
writer = new PrintWriter(out, true);
}
writer.write("Hi I'm a server");
//do some stuff that takes some time, user input, etc. etc.
writer.write("I'm still a server");
//close everything
}
谢谢 :)