ReadAllAsync не отвечает - PullRequest
0 голосов
/ 26 июня 2019

У меня есть этот код, который запущен в производство, но я пытаюсь проверить его локально.

Это служба TCP, и я пытаюсь создать клиент-тестер.

Служба примет соединение, но застревает при попытке прочитать первый запрос.

Это код сервера.Он застревает на var bytesRead = await socket.ReadAllAsync (...

    private Task<PackedVarSet> GetRequest(Socket socket, int requestLength)
    {
        return WithPooledBuffer(requestLength + sizeof(int), async (buffer, length) =>
        {
            int offset = sizeof(int);
            int messageSize = length - offset;

            var bytesRead = await socket.ReadAllAsync(buffer, offset, messageSize).ConfigureAwait(false);

            if (bytesRead != messageSize)
            {
                throw new Exception($"Incorrect message length detected. Expected {messageSize} bytes, but received {bytesRead} bytes.");
            }

            BitConverter.GetBytes(messageSize).BlockCopyTo(buffer);

            try
            {
                return new PackedVarSet(buffer);
            }
            catch(Exception ex)
            {
                var hex = BitConverter.ToString(buffer, 0, length).Replace("-", " ");
                var msg = $"The following message was unreadable.{hex.Insert(0, Environment.NewLine, 48)}{Environment.NewLine}";

                LogEntry(msg, ex);
            }

            return null;

        });
    }
...