В настоящее время я работаю над сетевым проектом, который должен отправить запрос на сервер и получить от него ответ. Сервер размещен сторонней компанией, поэтому у меня нет прямого доступа к серверу, но я могу запросить журналы сервера. Согласно этим журналам, мой запрос был успешно отправлен на сервер, и сервер также отвечает с ответом. Но ответ не получает в мою сторону. Я также использовал 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;
}