【问题标题】:TcpClient / TcpListener filenameTcpClient / TcpListener 文件名
【发布时间】:2013-04-09 16:57:07
【问题描述】:

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

到目前为止,我唯一的想法是将其作为字符串单独发送,但我只是好奇我是否错过了一些更简单/方便的方法。那么,TcpClient/TcpListener 中是否有一种方法可以发送我错过的文件名?有没有我没有遇到过的通用方法?

如果需要,我也可以发布代码。

【问题讨论】:

    标签: c# tcpclient tcplistener


    【解决方案1】:

    你可以发送的只是“数据”,一个扁平的字节数组。因此,您需要使用某种类型的协议,发送者和侦听器都适用于数据。

    您可以说您要传输“两个数据块”,在这种情况下您可以:

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

    您也可以格式化数据,例如通过发送一个 Xml 文档,其中包含:

    <myData>
      <filename>txt.txt</filename>
      <data>F83BA=</data>
    </myData>
    

    问题当然是文件内容必须编码才能验证Xml(例如base64编码)。

    【讨论】:

      猜你喜欢
      • 2011-10-06
      • 1970-01-01
      • 2017-01-02
      • 2015-08-16
      • 2011-04-07
      • 2013-09-06
      • 2016-12-25
      • 2017-04-09
      • 1970-01-01
      相关资源
      最近更新 更多