2010-05-01 71 views
0

目前我正在开发视频会议项目。对于这个我使用pwnat进行nat遍历。 pwnat基于udp隧道。我使用TCP连接进行数据传输。paket drop and split in udp tunnel

我的问题是,当我发送一个数据包时,它无法在其目的地端正常到达。有时它会丢弃数据包,并且多次将数据包分解(拆分)成碎片。

请帮助我..

如何发送和收到一个包分成单件。所以,我可以正确绘制图像并播放声音。

任何类型的帮助将被appriciated。

在此先感谢

+0

这将是我的猜测,隧道TCP与UDP将击败使用TCP的点,并消除任何真正的顺序协议的可能性,但这只是一个猜测。 – 2010-05-01 08:12:18

回答

0

TCP没有数据包的概念。一个TCP流是一个连续的字节流 - 如果你想在这个字节流中有一个结构,你必须通过实现某种成帧机制来强加它。一个简单的就是“长度前缀” - 在发送应用程序级帧时,首先发送帧的长度,然后发送数据。

+0

感谢您的回复 我对网络了解不多,因为我不知道新的无线程序。通过查看我的日志文件。我发现在发送数据前,数据长度为16384字节,接收端流长度为11300,下一个5084字节的数据流。但有时它会收到16384字节的全长数据。 这可能会发生,因为pwnat正在通过tcp在udp上工作,它基于udp隧道的概念。 – 2010-05-04 09:26:05

+0

@SR Dusad:TCP **不具有流内个别消息的概念。如果你发送16384字节,你最终将接收到这些16384字节 - 但你可以用任意大小的任意数量的块接收它们。你的应用程序必须处理它。 – caf 2010-05-04 11:17:38

+0

谢谢caf: 你的回答帮助我了解了这个概念 – 2010-05-06 08:21:16