private void HandleAsyncCallback(IAsyncResult ar) { if (ar.IsCompleted == false) { return; } TcpListener listener = (TcpListener)ar.AsyncState; var client = listener.EndAcceptTcpClient(ar); Console.WriteLine("TcpClient connected from " + client.Client.RemoteEndPoint); var wr_client = new WrappedTcpClient(client); wr_client.OnDidReadBytes += (theClient, data) => { OnDidReadBytes?.Invoke(theClient, data); }; lock (lockObj) { clients.Add(wr_client); } wr_client.Start(); tcpListener.BeginAcceptTcpClient(HandleAsyncCallback, tcpListener); }
private void HandleAsyncCallback(IAsyncResult ar) { int didRead = stream.EndRead(ar); if (didRead == 0) { Console.WriteLine("Did read 0 bytes"); stream = null; client?.Close(); client = null; return; } Span <byte> span = new Span <byte>(buffer, 0, didRead); OnDidReadBytes?.Invoke(this, span); span = null; stream.BeginRead(buffer, 0, buffer.Length, HandleAsyncCallback, null); }