示例#1
0
        IEnumerator <object> ServerTask(TcpListener server, int numClients)
        {
            server.Start();
            try {
                while (numClients > 0)
                {
                    System.Diagnostics.Debug.WriteLine("Waiting for incoming connection...");
                    var connection = server.AcceptIncomingConnection();
                    yield return(connection);

                    System.Diagnostics.Debug.WriteLine("Connection established. Sending data...");
                    using (TcpClient peer = connection.Result as TcpClient) {
                        byte[] bytes  = Encoding.ASCII.GetBytes("Hello, world!");
                        var    writer = peer.GetStream().AsyncWrite(bytes, 0, bytes.Length);
                        yield return(writer);

                        System.Diagnostics.Debug.WriteLine("Data sent.");
                    }
                    System.Diagnostics.Debug.WriteLine("Connection closed.");
                    numClients -= 1;
                }
            } finally {
                server.Stop();
            }
        }
        private IEnumerator <object> ListenTask()
        {
            while (true)
            {
                var f = _Listener.AcceptIncomingConnection();
                yield return(f);

                TcpClient tcpClient = f.Result as TcpClient;
                Console.WriteLine("Accepted connection from {0}.", tcpClient.Client.RemoteEndPoint);
                TelnetClient client = new TelnetClient(this, tcpClient);
                _Clients.Add(client);
                _NewClients.Enqueue(client);
            }
        }
示例#3
0
文件: IOTests.cs 项目: sq/Libraries
        public void SetUp()
        {
            Listener = new TcpListener(IPAddress.Any, 1235);
            Listener.Start();
            var fA = Listener.AcceptIncomingConnection();
            var fB = Network.ConnectTo("localhost", 1235);

            fA.GetCompletionEvent().Wait();
            A = fA.Result as TcpClient;
            fB.GetCompletionEvent().Wait();
            B = fB.Result as TcpClient;
            Listener.Stop();
            StreamA = A.GetStream();
            StreamB = B.GetStream();
        }
示例#4
0
        static IEnumerator <object> AcceptConnectionsTask(TcpListener server)
        {
            server.Start();
            try {
                int nextId = 0;
                while (true)
                {
                    var connection = server.AcceptIncomingConnection();
                    yield return(connection);

                    Peer peer = new Peer {
                        PeerId = nextId++
                    };
                    TcpClient client = connection.Result as TcpClient;
                    client.Client.Blocking = false;
                    var peerTask = PeerTask(client, peer);
                    Scheduler.Start(peerTask, TaskExecutionPolicy.RunAsBackgroundTask);
                }
            } finally {
                server.Stop();
            }
        }