我正在研究基于udp / tcp的P2P文件和实时视频流应用程序。该应用程序将使用c ++为Linux和Windows平台开发。
我们正在使用ICE(TCP / UDP打孔)来实现P2P。 虽然TCP确保数据包丢失,但对于UDP,我需要一个不错的方法来确保数据包必须传递给另一个对等体。
任何链接和建议都将受到赞赏?
答案 0 :(得分:4)
您需要涵盖4个主要问题:
您可以实施一个名为slicing window的协议。我不认为你会找到第三方库(尽管有人可能在这里证明我错了),因为上述所有内容通常都是由TCP本身实现的。
答案 1 :(得分:0)
您可能会发现此问题的答案有用:What do you use when you need reliable UDP?
答案 2 :(得分:-1)
一种简单的方法是为每个数据包建立一个监控线程 -
public void run() {
int transmissions = 0;
do {
sendPacket();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {}
} while (!acknowledged() && ++transmissions < MAX_TRANSMISSIONS);
}
如果性能很重要,可以使用单个线程来监控消息队列。