c中的DNS客户端程序

时间:2014-11-01 18:06:17

标签: 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/

提前致谢。

1 个答案:

答案 0 :(得分:2)

根据您所描述的内容,似乎您所要做的就是编写通常的tcp(或udp)客户端,并使用它向服务器发送特定消息并阅读消息。要做到这一点,你必须开始阅读一些Linux网络教程,我建议" UNIX网络编程"作者:W。Richard Stevens。简而言之,您必须填写struct sockaddr_in,拨打socket()connect()write/readclose()。这是一个例子,大写字母的函数只是相应的小写标准例程的包装。

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);
}