資源簡介
DNS解析,gethostbyname的C源碼
本人已經測試過,可以用。沒有的話可以噴我。

代碼片段和文件信息
//DNS?Query?Program
//Author?:?Prasshhant?Pugalia?(prasshhant.p@gmail.com)
//Dated??:?26/2/2007
//Header?Files
#include?“winsock2.h“
#include?“windows.h“
#include?“stdio.h“
#include?“conio.h“
#pragma?comment(lib“ws2_32.lib“)???//Winsock?Library
//List?of?DNS?Servers?registered?on?the?system
char?dns_servers[10][100];
//Type?field?of?Query?and?Answer
#define?T_A ????1 /*?host?address?*/
#define?T_NS 2 /*?authoritative?server?*/
#define?T_CNAME 5 /*?canonical?name?*/
#define?T_SOA 6 /*?start?of?authority?zone?*/
#define?T_PTR 12 /*?domain?name?pointer?*/
#define?T_MX 15 /*?mail?routing?information?*/
//Function?Prototypes
void???????????ngethostbyname????????????????(unsigned?char*);
void???????????ChangetoDnsNameFormat?????????(unsigned?char*unsigned?char*);
unsigned?char*?ReadName??????????????????????(unsigned?char*unsigned?char*int*);
void???????????RetrieveDnsServersFromRegistry(void);
unsigned?char*?PrepareDnsQueryPacket?????????(unsigned?char*);
//DNS?header?structure
struct?DNS_HEADER
{
unsigned short?id; ????//?identification?number
unsigned char?rd?????:1; //?recursion?desired
unsigned char?tc?????:1; //?truncated?message
unsigned char?aa?????:1; //?authoritive?answer
unsigned char?opcode?:4; ????//?purpose?of?message
unsigned char?qr?????:1; //?query/response?flag
unsigned char?rcode??:4; ????//?response?code
unsigned char?cd?????:1; ????//?checking?disabled
unsigned char?ad?????:1; ????//?authenticated?data
unsigned char?z??????:1; //?its?z!?reserved
unsigned char?ra?????:1; //?recursion?available
unsigned????short?q_count; ????//?number?of?question?entries
unsigned short?ans_count; //?number?of?answer?entries
unsigned short?auth_count; //?number?of?authority?entries
unsigned short?add_count; //?number?of?resource?entries
};
//Constant?sized?fields?of?query?structure
struct?QUESTION
{
unsigned?short?qtype;
unsigned?short?qclass;
};
//Constant?sized?fields?of?the?resource?record?structure
#pragma?pack(push?1)
struct??R_DATA
{
unsigned?short?type;
unsigned?short?_class;
unsigned?int???ttl;
unsigned?short?data_len;
};
#pragma?pack(pop)
//Pointers?to?resource?record?contents
struct?RES_RECORD
{
unsigned?char??*name;
struct?R_DATA??*resource;
unsigned?char??*rdata;
};
//Structure?of?a?Query
typedef?struct
{
unsigned?char?*name;
struct?QUESTION??????*ques;
}?QUERY;
int?main()??//do?you?know?what?is?int?main()??
{
unsigned?char?hostname[100];
WSADATA?firstsock;
RetrieveDnsServersFromRegistry();
printf(“\nInitialising?Winsock...“);
if?(WSAStartup(MAKEWORD(22)&firstsock)?!=?0)
{
printf(“Failed.?Error?Code?:?%d“WSAGetLastError());
return?1;
}?
printf(“Initialised.“);
????
printf(“\nEnter?Hostname?to?Lookup?:?“);
gets((char*)hostname);
????ngethostbyname(hostname);
_getch();
return?0;
}
void?ngethostbyname(unsigned?char?*host)
{
unsigne
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????11388??2007-07-24?12:21??main.c
?????文件????????4286??2007-02-26?20:50??dns.dsp
?????文件?????????531??2007-02-26?19:54??dns.dsw
- 上一篇:熱敏打印機圖形生成工具
- 下一篇:如何獲取Windows系統登陸用戶名
評論
共有 條評論