The Go Modem Protocol is the closest thing we have to a protocol for two computer go programs to communicate with each other. It is widely implemented and used. Originally designed for use over a serial cable, it can and is used across a network connection as well. The information here is from a discussion on the computer go mailing list during January, 2001.
Francois Grieu (firstname.lastname@example.org) says:
Unfortunately we have at least two different sources floating around (not counting CGFCOM.DLL). One comes with the definition of the standard by David Fotland, the other is by William Shubert and is in goDummy-1.0.4, available at http://www.igoweb.org/~wms/comp/cgoban/index.html or nearly equivalently the development version of GnuGo http://www.lysator.liu.se/~gunnar/gnugo/devel.html [obsolete link removed]
And we have 3 nearly identical sources for the standard, plus a subset
ftp://ftp.nuri.net/Go/programs/protocol.Z (no longer exists?)
http://www.smart-games.com/modemprotocol (no longer exists?)
Differs from 1 only by the corrected value of two constants
# define QUERYSTRING 0x200 # define QUERYMULTI 0x20f
Differs from 1 only by formatting and comments indicating that
QUERYSTRING should be changed as in 2 (no comment for QUERYMULTI)
the format of Query is 1EEEEEEEEE not 1EEEEEEE Changes in 3 come from a post on this list by Joe Author who wrote
in addition that, even after fix 2, the sample code given only answers queries for extended commands 0 and 15, although the protocol definition is explicit that any such query should be answered including (negatively) for unknown extended commands.
Subset: Tournament Communication Protocol
http://www.etl.go.jp/etl/suiron/~tazima/cgf99/CGF99_CFP.html#a (no longer exists?)
Among the thing I do not get in the protocol: should there be a 4 second timeout and retry? David Fotland's code seems to do it, but I could not find that in William Shubert's code.
Hiroshi Yamashita (email@example.com) contributes that:
HCGF web page has moved here.
And some communication files are
cgfcom.dll: A library of communication functions with help.
cgfgo.exe: Communication proxy program. Programs with no communication
function use this proxy program in the tournament.
cgfgnugo.exe: A demo program (GnuGo) with communication functions.
Interface to IGS for GTP-supporting clients
See gtpclient, by Tristan Cazenave.