【发布时间】:2012-06-13 15:17:40
【问题描述】:
我制作了一个服务器,其中数据本身的发送是这样的:
PrintWriter writer = new PrintWriter(new OutputStreamWriter(clientSocket.getOutputStream(), "UTF-8"));
writer.write(json);
writer.close();
我如何知道服务器是否确实发送了整个消息?
在我的客户端(用 C# 编写)中,当 json 字符串很长时,我会得到一定数量的字节,它小于 json 字符串的长度(由于某种原因,最大长度总是 183 字节)。
客户端正在使用异步连接。我怎么知道服务器是否确实发送了整个消息?是否有可能我需要将一条长消息分成多个块并一个接一个地发送?我只是不确定问题出在服务器还是在客户端。
【问题讨论】:
-
这是 TCP 套接字还是 UDP?首先,我不会使用
PrintWriter,它会吞下异常。您也可能没有从客户端代码中正确使用套接字。 -
我会用 Java 编写一个简单的客户端来接收一条简单的消息,看看是否可行。
-
@Jon Skeet 它的 TCP。它被用于 Windows Phone 应用程序。你想看看客户端 C# 代码吗?
-
@YonatanNir:嗯,我会首先编写一个控制台应用程序,它可以充当具有同步套接字 API 的客户端。然后使用使用异步 API 的控制台应用程序。只有在更简单的环境中工作后才能进入相对棘手的移动世界。
标签: java sockets client-server printwriter chunking