Javaでならそれほど苦労せず書けそうなんだが、
P2Pのライブラリとかいくつかあるし