Patrick F.-Productions
Patrick F.-Productions
DomainCheck - DCHK - FAQ

What is DomainCheck or DCHK?

DCHK stands for DomainavailabilityChecK and is a new protocol to check the availability of domains. It is based on IRIS, the Internet Registry Information Service (see RFC 3981) and is defined in RFC 5144: A Domain Availability Check (DCHK) Registry Type for the Internet. It uses the Lightweight UDP Transfer Protocol for the Internet Registry Information Service, defined in RFC 4993 for transport. It is meant as a more formal replacement of the whois protocol.

Advantages of DCHK compared to whois:
  • DCHK supports international domain names (IDN) with country specific characters by default, because it is based on UTF-8 / UTF-16 (Unicode)
  • Formal request and answer by using XML
  • UDP-protocol is simpler and faster than TCP
  • request and answer can be compressed
  • several domains can be queried with one request

  • UDP is unreliable
  • UDP-packet size is limited. An IRIS-LWZ request or answer must fit into a single UDP packet. If the "path MTU" is not known the packet must not exceed 1500 bytes, otherwise it can be as big as the MTU but not bigger than 4000 bytes.
  • XML is more difficult to handle

Goal of this project

The goal of this project is to provide clients and libraries written in C and C++ for using the DCHK service. It is divided in three parts:
  1. a library, which you can use in your own programs
  2. a command line client
  3. a graphical user interface (GUI)

What TLDs are supported?

The german registry has discontinued it's DCHK service end of 2013. The following TLDs do anounce the availability of DCHK in their zones:
  • .fr
  • .pm
  • .re
  • .tf
  • .wf
  • .yt

When has it been released?

The first version has been release at October 10th 2008

What license is used?

The code is released under the GNU Lesser General Public License (LGPL) version 3.

Copyright (C) 2008 Patrick Fedick

This program is free software; you can redistribute it and/or modify it
under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 3 of the License, or (at your
option) any later version.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.

You should have received a copy of the GNU Lesser General Public License
along with this program; if not, see

Where can I find the sourcecode?

The sourcecode is hosted on SourceForge:

Does the client run on Windows 2000 or below?

No, the client uses some functions which are not available on Windows versions below XP. You will get an error message that "freeaddrinfo" is not available in "WS2_32.dll" or something similar. The Microsoft documentations says there is a workaround for this:

"To execute an application using this function on earlier versions of Windows (Windows 2000, Windows NT, and Windows Me/98/95), then you must include the Ws2tcpip.h file and also include the Wspiapi.h file. When the Wspiapi.h include file is added, the freeaddrinfo function is defined to the WspiapiFreeAddrInfo inline function in the Wspiapi.h file. At runtime, the WspiapiFreeAddrInfo function is implemented in such a way that if the Ws2_32.dll or the Wship6.dll (the file containing freeaddrinfo in the IPv6 Technology Preview for Windows 2000) does not include freeaddrinfo, then a version of freeaddrinfo is implemented inline based on code in the Wspiapi.h header file. This inline code will be used on older Windows platforms that do not natively support the freeaddrinfo function." (see

I tried this out, but couldn't compile the sourcecode any longer with MinGW. So for now, you will need XP or Vista.