Невозможно получить сообщение из консольного приложения C# сервера TCP/IP

Я должен создать клиент TCP/IP на существующем сервере (который имеет специальную документацию), я следовал тому же, но ответа от сервера по-прежнему не получалось. Первоначально это была проблема формата сообщений и SMTP-команд, которые я заменил из другой рабочей команды.

Я должен использовать SSL без сертификата клиента для входа в систему.

TcpClient client = new TcpClient("Server DNS", PORT);
Console.WriteLine("-------------------------- \nConnection is : " + client.Connected);
SslStream stream = new SslStream(client.GetStream(), false, VerifyServerCertificate, null);

stream.AuthenticateAsClient("Server DNS");
Console.Write("Authentication status :" + stream.IsAuthenticated);
// FOR NOW I AM ONLY SENDING LOGIN COMMAND
string line = "BDAT 30 LAST<EOL>{login command}<LF>useridpassword";
stream.Write(Encoding.UTF8.GetBytes(line));
stream.Flush();
string serverMessage = ReadMessage(stream);
Console.WriteLine("\nServer says: {0}", serverMessage);
stream.Close();

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

static string ReadMessage(SslStream sslStream)
        {
            // Read the  message sent by the client. 
            // The client signals the end of the message using the 
            // "<EOF>" marker.
            byte[] buffer = new byte[2048];
            StringBuilder messageData = new StringBuilder();
            int bytes = -1;
            sslStream.ReadTimeout = 60000;
            do
            {
                // Read the client's test message.
                bytes = sslStream.Read(buffer, 0, buffer.Length);

                sslStream.Flush();

                // Use Decoder class to convert from bytes to UTF8 
                // in case a character spans two buffers.
                Decoder decoder = Encoding.UTF8.GetDecoder();
                char[] chars = new char[decoder.GetCharCount(buffer, 0, bytes)];
                decoder.GetChars(buffer, 0, bytes, chars, 0);
                messageData.Append(chars);
                // Check for EOF or an empty message. 
                if (messageData.ToString().IndexOf("<EOF>") != -1)
                {
                    break;
                }
            } while (bytes != 0);

            return messageData.ToString();
        }

Ниже приведен скриншот ошибки кода того же кода

Я также получаю эту ошибку при использовании точек останова


Извините за этот длинный пост, но я думаю, что эта информация была необходима. Пожалуйста, любая помощь приветствуется. Очень расстраивающая ситуация, так как я не смог продолжить с тех пор, как за последние 8 дней она прошла.

Спасибо.

0 ответов

Другие вопросы по тегам