使用socket,noob问题传输图像序列

时间:2010-07-14 15:26:32

标签: c++ sockets

我正在构建一个C ++应用服务器客户端,客户端每200毫秒向服务器发送一个图像(170kb)。

使用UDP,每个数据报允许未压缩的文件超过64kbs(我希望尽可能避免压缩文件)。

另一方面,我在设置TCP连接时遇到问题,我管理了一个连接,但只发送了第一个文件,我是否需要连接,发送文件,断开连接并对所有文件执行相同的过程?

两个套接字都是使用boost asio设置的。我应该采用其他协议吗?

提前致谢

1 个答案:

答案 0 :(得分:1)

首先,使用UDP。 TCP专为您的需求而设计,并且已经完成了很多工作。从你POV,TCP连接总是以某种方式工作,而使用UDP,你将不得不处理数据包排序,数据包丢失等。例如,一个图像需要3个数据包传输,UDP 保证所有3个包装都将到达目的地,如果有,则不保证它们将按照您发送的订单到达。

现在,对于TCP,可以为每个文件重新建立新连接,是的,但这不是必需的。理想情况下,您的代码应检查连接是否已建立,如果没有,则重新连接。现在,为什么只转移了第一个文件,我无法猜到为什么,因为它很可能是由于你的实现(即我无法通过我的水晶球看到代码,它必须是不带电的或某些东西;-))。但重点是,由于TCP或Boost :: ASIO的任何限制,它肯定不是而不是