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