public async static Task<TcpConnection> ConnectAsync(INetStatCollector netStatCollector = null, string debugName = null)
{
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
var localEndPoint = new IPEndPoint(IPAddress.Loopback, 0);
socket.Bind(localEndPoint);
var port = TcpConnection.PORT;
var remoteEndPoint = new IPEndPoint(IPAddress.Loopback, port);
await Task.Factory.FromAsync(socket.BeginConnect, socket.EndConnect, remoteEndPoint, null);
return new TcpConnection(socket, netStatCollector, debugName);
}
}