コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: IPCFixture.cs プロジェクト: lrdcasimir/LibuvSharp
		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);
		}
コード例 #3
0
 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();
         };
     });
 }
コード例 #4
0
        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);
        }