C# synchronous Tcp programming several ways of chat implementation