Example #1
0
        public void Receive(SocketBuffer buffer, TcpSocketReceiveCallback callback)
        {
            TcpSocketReceiveRoutine routine = new TcpSocketReceiveRoutine(handle, buffer);
            TcpSocketReceiveResult  result  = new TcpSocketReceiveResult
            {
                Socket     = this,
                Buffer     = buffer,
                OnReceived = callback
            };

            routine.Execute(result);
        }
Example #2
0
        public void CanReceiveDataUsingCallbackToExampleSite()
        {
            TimeSpan         timeout = TimeSpan.FromSeconds(2);
            ManualResetEvent check   = new ManualResetEvent(false);

            IPAddress[] addresses = Dns.GetHostAddresses("www.example.com");
            IPEndPoint  endpoint  = new IPEndPoint(addresses[0], 80);

            string request = "GET /index.html HTTP/1.1\r\nHost: www.example.com\r\n\r\n";

            byte[] data = Encoding.ASCII.GetBytes(request);

            using (CompletionThread worker = new CompletionThread())
            {
                SocketFactory factory = new SocketFactory(worker);
                TcpSocket     socket  = factory.Tcp();

                socket.Bind();
                worker.Start();

                TcpSocketReceiveCallback onReceived = result =>
                {
                    check.Set();
                };

                TcpSocketSendCallback onSent = result =>
                {
                    socket.Receive(data, onReceived);
                };

                TcpSocketConnectCallback onConnected = result =>
                {
                    socket.Send(data, onSent);
                };

                socket.Connect(endpoint, onConnected);
                bool completed = check.WaitOne(timeout);

                Assert.That(completed, Is.True);
                socket.Dispose();
            }
        }