Thanks. I used c#. Using managed vc++ would be same speed as they both
produce IL. Unmanaged vc++ would be faster in general (display, load time,
etc) and you could compile to a native image and not need the framework.
However, I can read vc++, but would not have completed (or started) the tool
or the underlying resolver library had I had to use c++. I used pointers in
the lowest level to map dgram byte[] to a struct without a copy, but would
not like to use pointers all over the place. I don't "think" the actual
socket layer would actually be any faster with c++, as they both end up
using the same thing - the winsock layer. Also, I can't tell the difference
in speed. I think mine, at times, is a bit faster then dig or nslookup -
not sure why that would be - it may just be a reporting thing, but the send
and receive speed using c# does not seem to be a perf issue.
As for DNS rfcs... I used all the rfcs pertaining to rrs I could (I will
have to compile a list.) I wrote the resolver around them. The general
concept is simple - format a query and parse the reply. However to do this
OO way requires many classes and the devil is in the details as you know.
And, in the beginning, make one change and have to make it to all derived
RRs - ugg. I am pretty happy with it now, put took a lot of changing and
pounding. Let me know if you have others questions on it. Thanks again.
Cheers!