şunu düşünebilirsin. bir tane server yazarsın ki bunu her şartta yazman lazım ancak bu serverin bağlantı kabul ve proxy işlerini görecek. mesajlar bir point'ten ötekine bu server üzerinden gidecek. yani basitçe. senin send metodun en compact şekilde şunları bulundurmalı.
send(message, target, serverIP ). server gelen mesajı alır kendi üstünde bir yere ( DB ) yazar ve target'e yollar. bu en düz mantık olanı. serveri multi thrad yaparsın çok yüksek sayıda olmayan durumlarda handling'i kolaylaştırır.
ve araştırman gereken konu : client - server programming.