Java PrintWriter作为套接字的行为
我制作了一个服务器,其中数据本身的发送如下:Java PrintWriter作为套接字的行为,java,sockets,client-server,printwriter,chunking,Java,Sockets,Client Server,Printwriter,Chunking,我制作了一个服务器,其中数据本身的发送如下: PrintWriter writer = new PrintWriter(new OutputStreamWriter(clientSocket.getOutputStream(), "UTF-8")); writer.write(json); writer.close(); 我如何知道服务器是否确实发送了整个消息 在我的客户机(用C#编写)中,当json字符串很长时,我会得到一定数量的字节,小于json字符串的长度(出于某种原因,最大长度总是18
PrintWriter writer = new PrintWriter(new OutputStreamWriter(clientSocket.getOutputStream(), "UTF-8"));
writer.write(json);
writer.close();
我如何知道服务器是否确实发送了整个消息
在我的客户机(用C#编写)中,当json字符串很长时,我会得到一定数量的字节,小于json字符串的长度(出于某种原因,最大长度总是183字节)
客户端正在使用异步连接。我如何知道服务器是否确实发送了整个消息?有没有可能我需要将一条长消息分成几块,然后一个接一个地发送?我只是不确定问题是在服务器还是在客户端。我最后做的是在消息中添加一个具有消息大小的头,然后在C端检查接收到的消息的大小是否与消息的大小相同,如果不是,再次询问套接字以获取数据,直到收到完整消息。这是TCP套接字还是UDP?首先,我不会使用包含异常的
PrintWriter
。也可能是您没有从客户端代码中正确使用套接字。我会用Java编写一个简单的客户端来接收一条简单的消息,看看是否有效。@Jon Skeet其TCP。它正用于windows phone应用程序。你想看看客户端C#代码吗?@YonatanNir:好吧,我首先要编写一个控制台应用程序,它可以充当带有同步套接字API的客户端。然后使用一个使用异步API的控制台应用程序。只有当你在一个更简单的环境中工作后,才能进入相对复杂的移动世界。