Example #1
0
        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);
        }
Example #2
0
        public void Write(byte[] data, bool asTextFrames = false)
        {
            lock (lockObj)
            {
                List <WrappedTcpClient> clientsToRemove = new List <WrappedTcpClient>();
                for (int i = 0; i < clients.Count; i++)
                {
                    WrappedTcpClient client = clients[i];
                    if (client.IsConnected == false)
                    {
                        clientsToRemove.Add(client);
                        continue;
                    }
                    Console.WriteLine("Writing " + data.Length + " bytes");
                    client.Write(data);
                }

                foreach (var cli in clientsToRemove)
                {
                    Console.WriteLine("Removing client ... no longer connected");
                    clients.Remove(cli);
                }
            }
        }
Example #3
0
 static void TcpServer_OnDidReadBytes(WrappedTcpClient client, ReadOnlySpan <byte> data)
 {
     webSocketServer?.Write(data.ToArray());
 }