>> Edit article
이름
제목
패스워드
적수동의 나이스한 리눅서 님들께, nslookup 비슷한 UDP 프로그램을 만들려고합니다. sendto()에 쿼리 도메인을 날렸는데 대답이 없는지 먹통입니다. DNS 메시지 형식이 나와있는 RFC 자료나 nslookup 소스를 구할 수 있는 곳이어없을까여? 답답합니당....T.T; 혹은 잘못된 부분이라도 있음 지적해주세여.....부탁..... 소스 별첨했습니다. //KYURAK,CHOE //usage : # query 164.124.101.2 53 [enter] // yahoo.com [enter] #include <stdio.h> #include<unistd.h> #include<arpa/inet.h> #include<netinet/in.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <sys/types.h> #include <netinet/in.h> #include <netdb.h> #include <sys/socket.h> #include <sys/wait.h> #include<stdlib.h> #define MAXBUFLEN 512 int main(int argc, char *argv[]){ int sockfd; struct sockaddr_in ns_addr; //name server adress info. int recvbytes,addr_len,sendbytes; char recv_buf[MAXBUFLEN],send_buf[MAXBUFLEN+1]; //Buffer for Receving,Sending if (argc < 3) { fprintf(stderr,"usage: querier [NameserverAddress] [port]"); exit(1); } if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) { //Creating socket perror("socket"); exit(1); } ns_addr.sin_family = AF_INET; ns_addr.sin_port = atoi(argv[2]); //name server adress setting ns_addr.sin_addr.s_addr =inet_addr(argv[1]); bzero(&(ns_addr.sin_zero), 8); if(fgets(send_buf,MAXBUFLEN,stdin)){ //Get Domain From STDIN(KEYBOARD) send_buf[MAXBUFLEN+1]=' '; //and insert to SendBuffer }else{ printf("input error"); exit(0); } if ((sendbytes=sendto(sockfd, send_buf, strlen(send_buf), 0, (struct sockaddr *)&ns_addr, sizeof(struct sockaddr))) == -1) { perror("sendto"); //querying By UDP sendto() } printf("sent %d bytes of query for domain,%sto %s",sendbytes,send_buf,inet_ntoa(ns_addr.sin_addr)); addr_len = sizeof(struct sockaddr); if ((recvbytes=recvfrom(sockfd, recv_buf, MAXBUFLEN, 0, //Receivev IP from NameServer (struct sockaddr *)&ns_addr, (socklen_t*)addr_len)) == -1) { // for Query perror("recvfrom"); exit(1); } printf("got packet from %s",ns_addr.sin_addr); printf("packet is %d bytes long",recvbytes); recv_buf[recvbytes+1] = ' '; printf("packet contains "%s"",recv_buf); close(sockfd); //close Socket. return 0; } -- MoonPriest
Copyleft
1999-2026 by
JSBoard Open Project
Theme Designed by
IDOO
All right reserved