gpt4 book ai didi

C - DNS 代理随时服务每个请求

转载 作者:行者123 更新时间:2023-11-30 17:56:33 27 4
gpt4 key购买 nike

我用 C 语言创建了 DNS 代理,如下所示:

"socket" - create socket to serve client
"bind" - bind that socket
while (true) {
"recvfrom" - a package from socket
"socket" - create socket for dns server
(1)
"sendto" - send package to dns server
"recvfrom" - respond from dns server
"sendto" - send respond to client
}

它正在工作。但是,如果我在位置 (1) 时收到另一个请求怎么办?如何添加一些等待请求的队列?如何改变这一点,即使我正在处理另一个请求,我也会满足每个请求?

最佳答案

您需要在服务器套接字上listen(),并且listen允许您指定积压的连接。每个周期您将能够处理最多数量的新客户到达。

然后,您在服务器套接字和任何未完成的客户端套接字上循环运行 select(),并维护它们的列表:

   select(nfds, readfds, writefds, errorfds, timeout);

select 退出时(除非超时),您将检查三个返回列表并处理任何准备好读取、写入或处于错误状态的套接字,并适本地分派(dispatch)它们。

您将找到详细示例here (它适用于 Linux,但易于移植)。

关于C - DNS 代理随时服务每个请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13441586/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com