2010-07-14 32 views
0

我正在构建一个C++应用程序服务器 - 客户端,客户端每200毫秒向服务器发送一个图像(170kb)。使用套接字进行图像序列传输,noob问题

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

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

两个套接字都是使用boost asio设置的。我应该另一个协议?

在此先感谢

回答

1

首先,对于使用UDP。 TCP是为您所需要的而设计的,而且它本身已经做了很多。从你的POV开始,TCP连接总是以某种方式工作,而使用UDP则必须处理数据包排序,数据包错误等。例如,一个映像需要3个数据包进行传输,UDP确实是而不是保证所有3包将在目的地驱车,如果他们这样做,并不能保证他们将按照您发送的相同顺序到达。

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

相关问题