c - c中的DNS客户端程序

标签 c linux sockets dns

我有这个家庭作业,我必须制作一个 DNS 客户端,它通过套接字连接到 DNS 服务器。 DNS 服务器已经构建好,所以我的工作是创建一个 DNS 客户端。客户端应该向服务器发送一个域名,而服务器应该响应该域名的等效 IP 地址。因此,我想知道编写 DNS 客户端代码的基本步骤。

此外,在互联网上,我发现了一个名为“DNS 查询程序”的程序。什么是 DNS 查询程序?我在下面附上了一个链接,它将引导您访问该查询程序。这个程序对我制作 DNS 客户端有用吗? http://www.binarytides.com/dns-query-code-in-c-with-linux-sockets/

提前致谢。

最佳答案

从您的描述看来,您所要做的就是编写普通的 tcp(或 udp)客户端并使用它向服务器发送特定消息并读取消息。为此,您必须开始阅读一些 linux 网络教程,我建议 W. Richard Stevens 撰写的“UNIX 网络编程”。简而言之,您必须填写 struct sockaddr_in,调用 socket()connect()write/读取close()。这是示例,大写字母的函数只是对相应小写标准例程的包装。

int main(int argc, char** argv) {

    int         sockfd;
    struct sockaddr_in  servaddr;

    if ( argc != 2)
        err_quit("usage: tcpcli <IPaddress>");

    sockfd = Socket(AF_INET, SOCK_STREAM, 0);

    bzero(&servaddr, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons( SERV_PORT);
    Inet_pton(AF_INET, argv[1], &servaddr.sin_addr);

    Connect(sockfd, (SA *) &servaddr, sizeof(servaddr));

    str_cli( stdin, sockfd);        /* do it all: write/read from socket */

    close( sockfd);

    exit(0);
}

关于c - c中的DNS客户端程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26691393/

相关文章:

c - 为什么结构名称应该有 typedef?

c - 通过内核模块发送数据包

c++ - Gstreamer appsrc : odd behaviour of need-data callback

linux - 为什么我不能从 bash 脚本添加带有 "echo >>"的行?

Linux 开发 |程序文件的良好实践

sockets - 触发按需 TCP 消息到可重新连接、不可共享的 Netty 管道的正确方法是什么?

java - 如何通过 Java Web 服务器在浏览器中显示图像/gif

c - C中的多维数组如何工作

windows - 使用 sed 损失双斜杠在 Windows 和 Unix 路径之间转换

c++ - memcpy 这对我来说真的没有意义