我正在构建一个接收套接字数据的应用程序。我需要在几秒钟后(比如 8 秒后)回复收到的数据。所以我想知道有没有办法安排一个在 8 秒后自动发送套接字数据的事件。我不喜欢在接收线程或任何其他线程中不必要地休眠 8 秒。到目前为止,这是我为接收作为 pthread 的套接字数据而编写的内容。
long DataSock_fd=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
StSocketAddress.sin_family=AF_INET; //address family
StSocketAddress.sin_addr.s_addr=inet_addr("10.10.10.10"); //load ip address
StSocketAddress.sin_port=htons(1234); //load port number
//bind the above socket to the above mentioned address, if result is less than 0(error in binding)
if(bind(DataSock_fd,(struct sockaddr *)&StSocketAddress,sizeof(StSocketAddress))<0)
{
close(DataSock_fd); //close the socket
perror("error while binding\n");
exit(EXIT_FAILURE); //exit the program
}
char Buff[1024];
long lSize = recvfrom(DataSock_fd,(char *)Buff,sizeof(Buff),0,NULL,NULL);
但我一直坚持安排一个在 8 秒后发送数据的事件。
最佳答案
看看这个SO answer .
你可以使用 <async>
像这样解决你的问题:
auto f = std::async(std::launch::async, [] {
std::this_thread::sleep_for(std::chrono::seconds(5));
printf("(5 seconds later) Hello");
});
关于c++ - C++中的事件调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45567200/