Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PrintWriter作为套接字的行为_Java_Sockets_Client Server_Printwriter_Chunking - Fatal编程技术网

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的控制台应用程序。只有当你在一个更简单的环境中工作后,才能进入相对复杂的移动世界。