static void Main(string[] args) { IPEndPoint superPeerEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8090); int port = 8091; ServerPeer server = new ServerPeer(superPeerEndPoint, port); server.Run(); ClientPeer client = new ClientPeer(superPeerEndPoint); client.Run(); //used Task.Factory.StartNew(() and sleep to simulate that this tasks are performed on different applications/machines Task.Factory.StartNew(() => server.AllowConnection(client.GetPeerAddress())); Thread.Sleep(3000); Task.Factory.StartNew(() => client.Connect(server.GetPeerAddress())); Thread.Sleep(3000); server.Send(new byte[] { 1, 2, 3, 4, 5 }); Console.WriteLine(client.Read()); client.Close(); Thread.Sleep(1000); server.Close(); Thread.Sleep(60000); }