Click here to Skip to main content
Click here to Skip to main content

DNS if u need it

By , 1 Oct 2002
 

Introduction

Some times you want to receive information from DNS servers using C++. This simple project shows how you can send and receive messages to and from DNS servers.

There are 2 downloads supplied (see above)
The first download contains the DNS structures and CDnsResolver class that you can use to make queries of your own.
The second download contains a sample project, console application.
Use sample app:
usingdns.exe DNS server mail_host mail_host [any count hosts]

For advanced users I'm add new demo project dgramm.zip
This showing as interpret DNS answers (gethostbyname() too ;)

This cool for Mail servers or just for study how it works.

For more inforamtion read the RFC documentation at DNS.NET [^] which also contains a number of useful tools.

If you know how to return this information under plain Win32 please post a message below.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

DarkSn0w
Web Developer
Russian Federation Russian Federation
Member
Programmer with 5 year of work
like networking applications and fun codes

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
GeneralBon!memberalexiworld16 May '04 - 1:48 
S'est tres bien! Je vous remercie!
QuestionWhy atre there so many compiler warnings?memberhesterloli8 Jan '04 - 17:33 
They are almost all warning C4786. Visual Studio 6 SP5. The Platform SDK include\lib come after those shipped in VS. Windows 2000 Server SP3Roll eyes | :rolleyes:
AnswerRe: Why atre there so many compiler warnings?memberDarkSn0w8 Jan '04 - 23:51 
MSDN says: 'identifier' : identifier was truncated to 'number' characters in the debug information.
This is STL warning error, debug information is cutting.
You may not use STL arrays or maps in my code. This will fun! Roll eyes | :rolleyes:

GeneralRe: Why atre there so many compiler warnings?memberhesterloli9 Jan '04 - 4:53 
Thanks Dark Sn0w. Any ideas how to stop them? Just make a release instead of a debug version?
GeneralRe: Why atre there so many compiler warnings?memberDarkSn0w10 Jan '04 - 5:09 
Place code of DNS Resolver (or what from my code) in stdafx.h...
This will genetate message one, when compiling stdafx.h...
Don't know will this work or not. When compiled release version, this don't show messages... or... in MSND say as disable this message, you must make large space for debug info.
or you can make not typedef std::vector...(or map), you must make class qqq:public std::vector{};... and this will not make this messages... Try and try. this question not for me, for c++ cool gays...
GeneralGREAT CODE!!!!!sussBarçaBoy6 Nov '03 - 8:45 

 
very very good!
 
it just does what it needs to do, fast and efficient without doing other stuff like the "real CDnsresolver" class does on Codeguru.com
 

but i have 1 remark:
or its my imagination OR this code is used in Sobig.F + Mimail worms
since they 1) check the current Dns (not implemented here however)
2)query all the mx records
 

and thats just what your code does, they just needed to implement the files and there ready
 
:s:s
 
too bad that viruswriters also visit websites like these :'(
 

 
Or maybe its just my imagination, but look on the internet
how many codes do you find doing this?
 
and how easy is it to code?
GeneralRe: GREAT CODE!!!!!memberDarkSn0w6 Nov '03 - 19:44 
what easy for code?
viruses? i'm don' write any viruse.
this not my profile...
GeneralRe: GREAT CODE!!!!!sussAnonymous25 Dec '03 - 7:02 

?
 
yeah surr barçaboy, those viruswriters used this code Roll eyes | :rolleyes: Roll eyes | :rolleyes:
 

great code anyway.
 
just 1 question:
to use the code, you need to enter the domain name server.
 
how can you query this without knowing it.
i've seen programs doing it, have searched for it awhile but can"t find it :s
 
all i know is that when a program f.e tried to query the dns, it connects to this default name server (which ofcourse is different from isp to isp)
 
anyone know how to do it??
GeneralRe: GREAT CODE!!!!!memberDarkSn0w8 Jan '04 - 23:57 
you may send query to any know DNS server. This may be DNS of your ISP or any ISP.Roll eyes | :rolleyes:
GeneralRe: GREAT CODE!!!!!sussd-code3 Dec '04 - 10:14 
You could also send a request directly to a root server, which in turn will forward you to the DNS server that you need to contact for the particular record
GeneralGREAT CODE!!!!!memberBarçaBoy6 Nov '03 - 8:45 

 
very very good!
 
it just does what it needs to do, fast and efficient without doing other stuff like the "real CDnsresolver" class does on Codeguru.com
 

but i have 1 remark:
or its my imagination OR this code is used in Sobig.F + Mimail worms
since they 1) check the current Dns (not implemented here however)
2)query all the mx records
 

and thats just what your code does, they just needed to implement the files and there ready
 
:s:s
 
too bad that viruswriters also visit websites like these :'(
 

 
Or maybe its just my imagination, but look on the internet
how many codes do you find doing this?
 
and how easy is it to code?
Generalthanksmembernjuhuangchinesemy6 Oct '03 - 22:02 
thanks for ur code
 
I want to use ur code to design a tool to test ENUM service.
 
so , I will add NAPTR(ref to RFC 2915) record to ur source code.
 
anyway , thanks
Generalgethostbyaddrmembermycia30 Mar '03 - 17:51 
nice work
I wonder if you could add more functions in it
especially the one that can do the same thing as gethostbyaddr()/WSAAsyncGetHostByAddr()/getnameinfo()
 
why I need that ?
1. gethostbyaddr() is not thread-safe
2. getnameinfo() is for win2k/xp only
3. WSAAsyncGetHostByAddr() is not designed for multi-thread use
4. it's easy to add the "Terminate" function in your code. gethostbyaddr() sometimes take many seconds to return the result, and no way to terminate while querying.
 
therefore, it would be much appreciated if you can add this new function
 
thank you
GeneralRe: gethostbyaddrmemberDarkSn0w22 Apr '03 - 3:34 
OK. this code is thread safe, what do you tell about Terminate function? where do you will user this?
In this code wery easy make terminate fuction, look at line witch WaitForSingleObject() function in query() function and you can make in this anything. Smile | :)
GeneralThanx...memberEPulse22 Feb '03 - 1:12 
Just what i needed...thanx for sharing your work. nevermind the english... most ppl here speak c++ instead... or they should..
GeneralRe: Thanx...memberDarkSn0w22 Apr '03 - 3:29 
thanks you. but i'm want make this more goodly. but i'm don't know as do it. this code is no 100% good. i'm must read full RFC, but i'm don't understant many words in this Frown | :( and my code not 100% compatible with RFC ;((
GeneralDNSQuery()memberAndreas Saurwein6 Feb '03 - 6:07 
Starting with Windows 2000, the Win32 API supports a function called DNSQuery() which does direct DNS queries for any record type. It even supports IPv6 type records.
Nice alternative if you are not depending on backwards compatibility.
 

... you keep forgetting that sheep shagging is not a crime in Australia ...Paul Watson, The Lounge
GeneralRe: DNSQuery()memberDarkSn0w22 Apr '03 - 3:26 
can you use this in win9x suxx? or wince?
GeneralDon't use this sourcememberwukas6 Feb '03 - 5:41 
I maked such mistake...
It so buggy, no more commentsMad | :mad:
GeneralRe: Don't use this sourcememberDarkSn0w22 Apr '03 - 3:25 
may be this has some mistakes and other things. but you may say about it, and i'm change this bugs. this code is only for education and i'm make for self study only Smile | :) .
GeneralRe: Don't use this sourcememberDarkSn0w6 Nov '03 - 19:37 
i'm know what this code has many errors..
but there was for testing of DNS quering and this belove that DNS answer has no any errors. If DNS answer is not corrent. this may fail. I have correct code for commercial application, but for beginners and this very good. Sorry for this errors. Smile | :)
GeneralRe: Don't use this sourcemember_BenC_22 Oct '04 - 1:35 
works well here! The article maybe a little terse but the code is good!
 
If people find something doesn't work for them - it helps if you can give a little information as to what the problem is - otherwise such comments are of little use to anyone!
GeneralRe: Don't use this sourcememberTuPacMansur5 Sep '05 - 19:32 
Yeah this code is really wonderful (i normally dont say this, but this is just great!). I guess wukas a newbie. Start reading How to C++ wukas.
 
Umer Mansoor
Questiongethostbyname() ??sussAnonymous30 Sep '02 - 7:06 
Hi,
 
How can I use this to get a host IP address by its DNS name
just like gethostbyname() does ?
 
Thanks.
AnswerRe: gethostbyname() ??memberDarkSn0w1 Oct '02 - 18:12 
This is simple answer if you cnow as use DNS

I'm update my article and add new Project: dgramm

Run it's programm and look at results. For your answer look at A Record

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web01 | 2.6.130523.1 | Last Updated 2 Oct 2002
Article Copyright 2002 by DarkSn0w
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid