是否可以同时执行sendto()recvfrom()?

时间:2016-06-08 13:51:37

标签: c networking tcp

我正在使用UDP套接字进行非常简单的TCP仿真网络应用程序。

但是,我想同时使用并调用sendto()recvfrom()函数来实现使用称为“选择性重复”的协议的流水线操作。我的意思是没有订购像发送,等待,接收,发送,等待,接收,...,我的意思是像发送,发送,发送,接收,发送,发送,接收,接收,像这样,没有任何命令调用{ {1}},sendto(),即随机调用这些函数。

但基本上,如果我不能同时使用这些功能,recvfrom()sendto()就像停止和等待协议一样。

但是,在流水线实施中,recvfrom()sendto()功能同时起作用。

我应该使用recvfrom()还是其他解决方案?或多路复用?

2 个答案:

答案 0 :(得分:4)

要同时执行任何,您需要拥有多个线程。

一个线程将根据需要调用sendto,另一个线程将调用recvfrom

答案 1 :(得分:0)

如果您想自己实现,则应使用线程。 但是,如果要使用内置函数,请阅读第7.2节this pdf中的select函数。它是一个功能强大的工具,也是最常用的。

它基本上做的是跟踪准备好进行通信的连接。