我有一个客户端程序和一个服务器程序。我发送512字节的数据包,我想发送一些文件。服务器如何知道传输何时完成?
我希望服务器程序在停止运行之前接收一些文件,我想区分它们。我想要做的是打印出收到的数据包的数量:
已收到数据包编号
已收到数据包编号
已收到包号
一旦我收到这个文件,我想把这个计数器变量设置为0,这意味着我必须检测文件何时完全发送(这意味着接收少于512个字节)。有没有办法计算从客户端程序收到的字节数?这是最好的方法吗?我正在使用字节数组。
答案 0 :(得分:-1)
最好的方法是引入分隔符。这将成为您协议的一部分。
当您发送文件时,您将发送数据。当没有更多字节要发送时,客户端将向服务器发送END_OF_MESSAGE
值,表示没有更多数据要发送,然后在您的代码中,您有类似的内容:
String END_OF_MESSAGE = "ENDOFMESSAGE";
if(input.equals(END_OF_MESSAGE)) {
// You know the client has finished their transmission.
}
注意 :我会使END_OF_MESSAGE
的值远比这复杂得多。这仅用于演示目的。
修改强>
正如JB Nizet建议的那样,另一种选择是先发送文件的长度。这样,当传输的字节数等于或大于预设大小时,服务器知道传输何时结束。