TcpClient / TcpListener filename

本文关键字:filename TcpListener TcpClient | 更新日期: 2023-09-27 18:08:06

我正在实现一个简单的文件发送方法,基于我在这里找到的例子,但是我很难找到任何关于如何在发送实际字节之前发送文件名和/或类型的参考。我看到的所有示例,都是在接收端手动设置文件名。

到目前为止,我唯一的想法是将其作为字符串单独发送,但我只是好奇,如果我错过了一些更容易/方便的方法来做到这一点。那么,TcpClient/TcpListener中是否有方法发送我错过的文件名?有没有一种常见的方法来做这件事,我只是没有遇到过?

如果有必要,我也可以发布代码

TcpClient / TcpListener filename

你只能发送"data",一个扁平的字节数组。因此,您将需要使用某种协议,发送方和侦听器都适用于数据。

你可以说你想要传输"两个数据块",在这种情况下你可以:

  • 发送每个块的大小,后面是实际数据,后面是下一个块的大小和数据,或者:
  • 使用分隔符字符(只有在实际数据不包含分隔符时才有效(即使这样也有解决方案,如在数据中转义分隔符))

或者您可以格式化数据,例如通过发送包含以下内容的Xml文档:

<myData>
  <filename>txt.txt</filename>
  <data>F83BA=</data>
</myData>
当然,问题在于文件内容必须是编码的,以便验证Xml(例如base64编码)。