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); }
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(); } }