编写在TCP上运行的协议

时间:2014-03-04 19:41:22

标签: sockets http tcp

我正在编写一个通过TCP层发送文件的协议。命令通常如何与有效负载分开?我事先知道有效载荷有多大,我应该预先发送长度吗?

我也在考虑使用HTTP来传输文件,是否会减少耗时的任何意见?我正在使用.NET,因此底层协议已经运行良好。

2 个答案:

答案 0 :(得分:1)

使用更高级别的协议。这将为您节省大量时间。 HTTP听起来非常合适,因为您似乎有一个请求 - 响应模式。

编写TCP协议很难。做到最好的最好方法是:不要这样做。

如果HTTP不适合您,请调查协议缓冲区。

答案 1 :(得分:1)

  

命令通常如何与有效负载分开?我事先知道   有效载荷有多大,我应该预先发送长度吗?

是。典型的模式是发送固定长度的报头(例如,以大端整数格式的字节数),然后是实际的数据字节(并且可选地,根据需要重复)。一定要为标题使用固定宽度类型(例如uint64_t而不是unsigned long),因为你(可能)就像你的协议一样,无论编译什么机器都可以使用它。

  

我也在考虑使用HTTP来传输文件   关于这是否会耗费更少时间的意见?我正在使用.NET   所以底层协议已经运行良好。

无论哪种方式都可以。使用你最熟悉的任何东西。