Simplest way to handle AI bots i have seen, is to use use writeln(), readln(). Host application starts all bots, and writes/reads to each, using those simple console commands. First communication could be from host, who could assign turn number for each bot. Bots writeln() their moves and wait for enemy moves with readln(). Host writeln()'s other bots where he moved, and so on. Point being, you don't need TCP or anything complicated.