Beispiel #1
0
        private void ReceiveCallback(IAsyncResult ar)
        {
            var connection = (ConnectionInfo)ar.AsyncState;

            lock (connection.LockObject)
            {
                try
                {
                    var bytesRead = connection.Socket.EndReceive(ar);
                    if (bytesRead == 0)
                    {
                        connection.Dispose();
                        return;
                    }

                    var oneGood       = false;
                    var receivedQuery = connection.Buffer.GetString(0, bytesRead).Split('\n');
                    foreach (var s in receivedQuery)
                    {
                        if (JsonValidator.TryParseJson(s, out var parsed))
                        {
                            oneGood = true;
                            Handle(connection, parsed);

                            connection.Socket?.BeginReceive(connection.Buffer, 0, connection.Buffer.Length, SocketFlags.None, ReceiveCallback, connection);
                        }
                    }

                    if (!oneGood)
                    {
                        Console.WriteLine("---------------------------------");
                        Console.WriteLine("Can't handle Json");
                        Console.WriteLine(string.Join("\n", receivedQuery));
                        Console.WriteLine("---------------------------------");
                        connection.Dispose();
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                }
            }
        }
Beispiel #2
0
        private void ReceiveCallback(IAsyncResult ar)
        {
            ConnectionInfo connection = (ConnectionInfo)ar.AsyncState;

            try
            {
                int bytesRead = connection.Socket.EndReceive(ar);
                if (bytesRead == 0)
                {
                    connection.Dispose();
                    return;
                }

                bool    oneGood = false;
                var     str     = connection.Buffer.GetString(0, bytesRead).Split('\n');
                JObject parsed;
                foreach (var s in str)
                {
                    if (JsonValidator.TryParseJson(s, out parsed))
                    {
                        oneGood = true;
                        Handle(connection, parsed);

                        connection.Socket?.BeginReceive(connection.Buffer, 0, 1024, SocketFlags.None, ReceiveCallback, connection);
                    }
                }

                if (!oneGood)
                {
                    Console.WriteLine("---------------------------------");
                    Console.WriteLine("Can't handle Json");
                    Console.WriteLine(string.Join("\n", str));
                    Console.WriteLine("---------------------------------");
                    connection.Dispose();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
        }