public async Task CanObtainAcceptedRemoteEndpointUsingTasks() { using (CompletionThread worker = new CompletionThread()) { IPEndPoint endpoint; SocketFactory factory = new SocketFactory(worker); using (TcpSocket server = factory.Tcp()) using (TcpSocket client = factory.Tcp()) { worker.Start(); client.Bind(); server.Bind(IPAddress.Loopback); server.Listen(1); endpoint = server.Info().Endpoint; Task <TcpSocketAccept> accepting = server.Accept(); await client.Connect(endpoint); TcpSocketAccept accepted = await accepting; IPEndPoint remote = accepted.GetRemote(); Assert.That(remote.Address, Is.EqualTo(endpoint.Address)); Assert.That(remote.Port, Is.Not.EqualTo(endpoint.Port)); Assert.That(remote.Port, Is.Not.Zero); } } }
public static TcpSocketInfo BindAndInfo(this TcpSocket socket, int port) { if (socket.Bind(port) == false) { return(null); } return(socket.Info()); }
public static bool Bind(this TcpSocket socket, out int?port) { TcpSocketInfo info; if (socket.Bind() == false) { port = null; return(false); } info = socket.Info(); port = info.Endpoint.Port; return(true); }
public static TcpSocketInfo BindAndInfo(this TcpSocket socket) { socket.Bind(); return(socket.Info()); }