【发布时间】:2016-12-23 17:27:23
【问题描述】:
我正在尝试通过 TCP/IP 协议与服务器通信。这是我的方法:
private bool SendTcpRequest<T>(T request, Settings settings)
{
try
{
TcpClient client = new TcpClient(settings.Url, settings.Port);
byte[] data = null;
if (!string.IsNullOrEmpty(request.ToString()))
data = Encoding.ASCII.GetBytes(request.ToString());
NetworkStream stream = client.GetStream();
if (stream.CanWrite)
stream.Write(data, 0, data.Length);
else
{
return false;
}
if (stream.CanRead)
{
byte[] myReadBuffer = new byte[client.ReceiveBufferSize];
IFormatter formatter = new BinaryFormatter();
do
{
var numberOfBytesRead = stream.Read(myReadBuffer, 0, client.ReceiveBufferSize);
responseMessage = new StringBuilder();
responseMessage.AppendFormat("{0}", Encoding.ASCII.GetString(myReadBuffer, 0, numberOfBytesRead));
}
while (stream.DataAvailable);
}
else
{
return false;
}
stream.Close();
client.Close();
return true;
}
catch (ArgumentNullException e)
{
return false;
}
catch (SocketException e)
{
return false;
}
}
服务器将发送如下响应:
<TOPUPRESPONSE>
<RESULT>00</RESULT> // status of the transaction
<RESULTTEXT>transaction successful</RESULTTEXT> //description of the result code
<TERMINALID>69500002</TERMINALID>
<TXID>0803170919092</TXID>
<PRODUCTID>XYZ</PRODUCTID>
</TOPUPRESPONSE>
现在我有一个用于响应的 c# 类,我想知道如何将网络响应映射到我的类。我对此很陌生,我什至不确定我的 responseMessage 会是什么样子?谁能给点意见?
【问题讨论】:
标签: c# serialization deserialization tcpclient networkstream