我正在使用UDP套接字进行非常简单的TCP仿真网络应用程序。
但是,我想同时使用并调用sendto()
,recvfrom()
函数来实现使用称为“选择性重复”的协议的流水线操作。我的意思是没有订购像发送,等待,接收,发送,等待,接收,...,我的意思是像发送,发送,发送,接收,发送,发送,接收,接收,像这样,没有任何命令调用{ {1}},sendto()
,即随机调用这些函数。
但基本上,如果我不能同时使用这些功能,recvfrom()
,sendto()
就像停止和等待协议一样。
但是,在流水线实施中,recvfrom()
,sendto()
功能同时起作用。
我应该使用recvfrom()
还是其他解决方案?或多路复用?
答案 0 :(得分:4)
要同时执行任何,您需要拥有多个线程。
一个线程将根据需要调用sendto
,另一个线程将调用recvfrom
。
答案 1 :(得分:0)
如果您想自己实现,则应使用线程。 但是,如果要使用内置函数,请阅读第7.2节this pdf中的select函数。它是一个功能强大的工具,也是最常用的。
它基本上做的是跟踪准备好进行通信的连接。