0

这里我使用Java语言的socket知识。我使用客户端连接服务器并接收我需要的文件。问题是我怎么知道客户端接收的文件已经完成。

4

3 回答 3

1

在客户端和服务器之间建立一些协议。如果客户端完成后将已知的完成值写回套接字,则服务器将知道客户端的状态。有很多方法可以解决这个问题,其中一种是“哨兵价值”策略。

http://en.wikipedia.org/wiki/Sentinel_value

于 2012-07-23T14:28:59.193 回答
0

通过通过控制连接发送某种“我完成信号”(FTP 像这样工作),或者通过断开套接字,这也表示“传输结束”。在这种情况下,另一端套接字上的“ReadByte()”将返回“0”。

于 2012-07-23T14:28:56.463 回答
0

当您传输了正确数量的字节后,文件就会被发送。这个“正确的数字”可以通过各种方式获得,具体取决于协议。

如果您通过没有协议但 TCP/IP 的套接字发送内容,则客户端只会读取流直到它看到 0 字节(这意味着服务器关闭了它的连接端)。注意,这意味着服务器发送文件然后立即关闭套接字。(不是“关闭”,至少不是立即。只是“关闭”。)每个连接一个文件。您为不使用某种文件传输协议而付出的部分代价。

如果你想验证,我想你可以想象你可以让客户端计算文件内容的哈希值,并根据你最终计算的结果仔细检查它。但我不知道这样做的常用协议。

于 2012-07-23T14:29:15.497 回答