4

我的目标是实现一个基于 Java 套接字的简单请求-响应模式,用于从服务器请求对象。

它应该像这样工作:

  1. 客户端向服务器发送一条消息,服务器对此进行评估。根据他收到的内容,调用某个函数。这部分有效。
  2. 服务器将请求的数据写入 ObjectOutputStream。这也有效,至少我没有收到错误。
  3. 客户端从输入流中读取数据,直到他收到一个关闭消息,该消息使程序退出while循环。这不能正常工作。

以下是一些关键的代码片段:

// Client (Sending request) *** WORKS

objectOutputStream.writeInt(GET_OBJECT); 
objectOutputStream.flush();


// Server (After receipt of the message) *** WORKS
objectOutputStream.writeInt(object);
objectOutputStream.writeInt(CLOSE);



// Client (Reading the answer from the server) *** WRONG

while(true){
int i = objectInputStream.readInt(); 
if(i == CLOSE)
break;   
}
4

1 回答 1

2
  1. You have flush at the client side, and the message is received by the server;
  2. you lack flush at the server side, and the message is not received by the client.

I notice a pattern in these two facts...

于 2013-05-29T19:44:14.063 回答