public void CanSendHandles() { int count = 0; Loop.Default.Run(async() => { var handles = new Stack <Handle>(); string name = "test"; var pipelistener = new IPCPipeListener(); pipelistener.Bind(name); pipelistener.Connection += () => { var client = pipelistener.Accept(); client.Resume(); client.HandleData += (handle, data) => { handles.Push(handle); count++; if (count == 3) { foreach (var h in handles) { h.Close(); } pipelistener.Close(); } }; }; pipelistener.Listen(); var pipe = new IPCPipe(); await pipe.ConnectAsync(name); var ipep = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 7000); var tcplistener = new TcpListener(); tcplistener.Bind(ipep); tcplistener.Connection += () => { var client = tcplistener.Accept(); pipe.Write(client, new byte[1], (ex) => { client.Close(); tcplistener.Close(); }); }; tcplistener.Listen(); var tcp = new Tcp(); await tcp.ConnectAsync(ipep); tcp.Write("HELLO WORLD"); var udp = new Udp(); udp.Bind(ipep); pipe.Write(udp, Encoding.Default.GetBytes("UDP"), (ex) => udp.Close()); pipe.Write(pipe, Encoding.Default.GetBytes("pipe"), (ex) => pipe.Close()); }); Assert.Equal(3, count); }
void TestCanSendHandles(string pipename, IPEndPoint ipep) { int count = 0; Loop.Default.Run(async () => { var handles = new Stack<Handle>(); var pipelistener = new IPCPipeListener(); pipelistener.Bind(pipename); pipelistener.Connection += () => { var client = pipelistener.Accept(); client.Resume(); client.HandleData += (handle, data) => { handles.Push(handle); count++; if (count == 3) { foreach (var h in handles) { h.Close(); } pipelistener.Close(); } }; }; pipelistener.Listen(); var pipe = new IPCPipe(); await pipe.ConnectAsync(pipename); var tcplistener = new TcpListener(); tcplistener.Bind(ipep); tcplistener.Connection += () => { var client = tcplistener.Accept(); pipe.Write(client, new byte[1], (ex) => { client.Close(); tcplistener.Close(); }); }; tcplistener.Listen(); var tcp = new Tcp(); await tcp.ConnectAsync(ipep); tcp.Write("HELLO WORLD"); var udp = new Udp(); udp.Bind(ipep); pipe.Write(udp, Encoding.Default.GetBytes("UDP"), (ex) => udp.Close()); pipe.Write(pipe, Encoding.Default.GetBytes("pipe"), (ex) => pipe.Close()); }); Assert.Equal(3, count); }
public static void Main(string[] args) { Loop.Default.Run(() => { var listener = new TcpListener(); listener.Bind(Default.IPEndPoint); listener.Listen(); var response = Encoding.Default.GetBytes("HTTP/1.1 200 OK\r\nContent-Length: 13\r\n\r\nHello World\r\n"); listener.Connection += () => { var client = listener.Accept(); client.Data += (ArraySegment <byte> obj) => { client.TryWrite(response); client.Shutdown(); }; client.Resume(); }; }); }
public void RemoteAndLocalAddress() { Tcp client = null; Tcp server = null; bool called = false; var l = new TcpListener(); l.Bind(IPAddress.Any, 8000); Action check = () => { if (client == null || server == null) { return; } Assert.Equal(client.LocalAddress, server.RemoteAddress); Assert.Equal(client.RemoteAddress, server.LocalAddress); Assert.Equal(server.LocalAddress.Port, 8000); client.Shutdown(); server.Shutdown(); l.Close(); called = true; }; l.Listen(); l.Connection += () => { server = l.Accept(); check(); }; Tcp t = new Tcp(); t.Connect("127.0.0.1", 8000, (e) => { client = t; check(); }); Loop.Default.Run(); Assert.True(called); }