【发布时间】:2015-07-17 08:05:22
【问题描述】:
我已经连接了服务器,但我并不真正了解 TCP 是如何工作得足以完成任务的。我想在开始编写内容之前发送文件名,但是如何将文件名与内容分开读取。这在带有 socket.receive(packet) 的 UDP 中真的很容易,但我想不出用 TCP 套接字来做这件事的类似方法。
【问题讨论】:
我已经连接了服务器,但我并不真正了解 TCP 是如何工作得足以完成任务的。我想在开始编写内容之前发送文件名,但是如何将文件名与内容分开读取。这在带有 socket.receive(packet) 的 UDP 中真的很容易,但我想不出用 TCP 套接字来做这件事的类似方法。
【问题讨论】:
您有两种选择,具体取决于您的协议设计:
将文件名长度作为固定大小的整数发送,然后发送实际文件名。然后接收器可以先读取长度,然后再读取它指示读取文件名的字节数。
<length><filename><file data>
发送文件名,然后发送唯一的分隔符,例如CRLF。然后接收方可以继续读取,直到遇到分隔符。
<filename><delimiter><file data>
【讨论】:
使用固定字节数写入文件名的长度。然后写入文件名。
在接收端,读取文件名的长度,然后在知道长度后读取文件名。
【讨论】: