public class SocketClient { public ClientSocket() { _client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); } public bool Connect(IPAddress ipAddress, int port) { _client.Connect(ipAddress, port); if (!_client.Connected) { return false; } Receive(); return true; } private async void Receive() { var buffer = new byte[4096]; for (;;) { try { var bytesRead = await Task.Factory.FromAsync( _client.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, null, _client), _client.EndReceive); if (bytesRead <= 0) continue; var message = Encoding.UTF8.GetString(buffer, 0, bytesRead); Console.WriteLine(message); } catch { break; } } }