私は初心者のプログラマーなので、これは非常に明白であり、答えを見落としている可能性があります。しかし、質問に進みます。
私は 2 つの部分からなるプログラムを持っています (この例より少し複雑ですが、状況は同じです)。プログラムには、クライアントとサーバーの間で発生する複数のメッセージがあります。クライアントにメッセージを送信するためにサーバー側に PrintWriter があり、クライアントには、送信されたメッセージを読み取るための BufferedReader があります。この例を実行すると、出力として 2 行が表示されます。最初のメッセージは両方のメッセージで、2 番目のメッセージは NULL です。私が疑問に思っているのは、2 番目のメッセージが送信される前にクライアント側で何かを実行できるように、2 番目のメッセージの準備ができるまでサーバーを基本的に停止する方法があるかどうかです。
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
}
ありがとう :)