【发布时间】:2012-06-04 03:10:19
【问题描述】:
我正在尝试实现一个服务器,它在收到消息时会执行以下操作:
try{
ObjectInputStream is = new ObjectInputStream(clientSocket.getInputStream());
String message = (String)is.readObject();
ActivateCommand(message,clientSocket);
is.close();
}
和激活命令:
private void ActivateEwolfCommand(String msg, Socket clientSocket) throws IOException
{
ObjectOutputStream os = new ObjectOutputStream(clientSocket.getOutputStream());
Gson gsonObject = new Gson();
.
//code which makes a Json string
.
os.writeObject(json);
os.close();
}
现在,当我通过 junit 测试向本地主机发送消息对其进行测试时,它可以正常工作。但是当尝试从 C# 客户端连接到服务器时,客户端连接但服务器在到达 clientSocket.getInputStream() 点时抛出 EOF 异常。 我猜这是因为服务器不知道消息何时结束,但我不知道是否真的如此,如果是这样,那么我该如何解决?
【问题讨论】:
-
作为一名程序员,您可以在最后使用一些独特的信息流式传输数据。在接收点放置一个 if 语句,检查代码是否到达结束位!如果是则退出循环
-
但正如你所看到的,我只是在制作 String msg = (String)is.readObject() 并且我在字符串 var 中收到了消息......我怎么能告诉它在它发生时停止看到一些特殊字符或什么?
-
如果你想实现一个服务器Netty可能有用:netty.io
标签: java sockets client-server inputstream eofexception