Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 如何在没有多线程程序的情况下同时生成UDP和TCP流_Sockets - Fatal编程技术网

Sockets 如何在没有多线程程序的情况下同时生成UDP和TCP流

Sockets 如何在没有多线程程序的情况下同时生成UDP和TCP流,sockets,Sockets,我的程序如下 发送方: while(1){ sendto(); // send some data packets usleep(); // delay to avoid overflow } 接收端: while(1){ recvfrom(); // receive } 我希望在receiver while循环中出现一个tcp套接字,它每隔2秒(或每收到100个数据包)从接收方向发送方发送一条控制消息(更改为usleep的时间)。同时,发送方也应该能够在while循环中侦

我的程序如下

发送方:

while(1){
   sendto(); // send some data packets
   usleep(); // delay to avoid overflow
}
接收端:

while(1){
   recvfrom(); // receive
}

我希望在receiver while循环中出现一个tcp套接字,它每隔2秒(或每收到100个数据包)从接收方向发送方发送一条控制消息(更改为usleep的时间)。同时,发送方也应该能够在while循环中侦听此控制消息。没有多线程程序可以实现吗?

我想你可以设置一个计时器,以一定的时间间隔轮询tcp套接字。为什么不通过添加另一条UDP消息来使用UDP套接字,告诉接收者更改usleep?谢谢回复。我希望控制消息是可靠的(即TCP)。顺便说一句,如何写一个“如果条件”,它将是真正的每2秒后。然后我可以重新设置计时器并再次循环。在Unix/Linux上,您可以使用
alarm()
和信号处理程序,但要做到这一点可能并不比在另一个线程中容易。您的平台上是否有非阻塞套接字(O_NONBLOCK)和select()?