TcpClient не читает ответ от сервера (ядро .Net) - PullRequest
0 голосов
/ 15 октября 2019

В настоящее время я работаю над сетевым проектом, который должен отправить запрос на сервер и получить от него ответ. Сервер размещен сторонней компанией, поэтому у меня нет прямого доступа к серверу, но я могу запросить журналы сервера. Согласно этим журналам, мой запрос был успешно отправлен на сервер, и сервер также отвечает с ответом. Но ответ не получает в мою сторону. Я также использовал Packet Sender Tool, чтобы проверить ответ, и он также не получил никакого ответа. В чем может быть проблема здесь? В моем коде нет ничего плохого, потому что я получаю ответы при подключении к разным серверам. эта проблема возникает только с одним конкретным сервером. Спасибо всем.

// Установить TcpConnection

public async Task<TcpClient> ConnectAsync(TcpClient tcpClient)
  {
     string xmlMessageServer = _configuration["XmlMessageStrings:xmlMessageServer"];
     string xmlMessagePort = _configuration["XmlMessageStrings:xmlMessagePort"];

     var errorLog = NLogBuilder.ConfigureNLog("NLog.config").GetLogger("debitcardErrorLog");

     try
     {
        await tcpClient.ConnectAsync(xmlMessageServer, Convert.ToInt32(xmlMessagePort));
        errorLog.Info(tcpClient.GetHashCode());
        return tcpClient;
     }
     catch (SocketException ex)
     {
        errorLog.Error(ex.Message); // log error
        throw ex;
     }
  }

  try
     {
        TcpClient tcpClient = new TcpClient();
        await _connectWithTcpServer.ConnectAsync(tcpClient);

        if (tcpClient.Connected)
        {
           debitcardRequestLog.Info("Tcp Client Connected"); // check if client connected

           NetworkStream stream = tcpClient.GetStream();

           debitcardRequestLog.Info(xmlMessage); // log xmlMessage

           byte[] xmlRequest = Encoding.ASCII.GetBytes(xmlMessage); // converts the xmlRequest into a byte array
           stream.Write(xmlRequest, 0, xmlRequest.Length); //writes the xmlRequest into the stream

           byte[] bufferSize = new byte[tcpClient.ReceiveBufferSize]; //converts the bufferSize into a byte array

           int xmlResponse =  stream.Read(bufferSize, 0, bufferSize.Length);  //reads the xml response from switchware

           if (xmlResponse == 0)
           {
              errorLog.Error("0 bytes received from server");
           }

           string xmlResponseMsg = string.Empty;
           string xmlResponseMsgASCII = Encoding.ASCII.GetString(bufferSize, 0, 0); // decode the byte array into a string

           debitcardResponseLog.Info(xmlResponseMsgASCII);

           fromSwitchwareMessage = xmlResponseMsgASCII;
        }
     }
     catch (Exception ex)
     {
        errorLog.Error(ex.Message); // log error
        throw ex;
     }
...