/// <summary>
/// 获取通讯中间件通过socket发送的数据,DataTable
/// </summary>
/// <param name="requestCode">请求code</param>
/// <param name="array">查询的条件,封装在数组里</param>
/// <param name="errMsg">错误提示</param>
/// <returns>经过一系列处理过后的DataTable</returns>
public
DataTable GetDataTable(
string
requestCode, IList<
string
> list,
out
string
errMsg)
{
try
{
string
ip = ConfigurationManager.AppSettings[
"ip"
].ToString().Trim();
int
port = Convert.ToInt32(ConfigurationManager.AppSettings[
"port"
].ToString().Trim());
IPEndPoint serverip =
new
IPEndPoint(IPAddress.Parse(ip), port);
using
(Socket clientSocket =
new
Socket(serverip.AddressFamily, SocketType.Stream, ProtocolType.Tcp))
{
clientSocket.Connect(serverip);
string
outBufferString =
string
.Empty;
switch
(requestCode)
{
case
"111001"
:
outBufferString = PrepareSendPackets(
"111001"
, list);
break
;
case
"111002"
:
outBufferString = PrepareSendPackets(
"111002"
, list);
break
;
case
"111003"
:
outBufferString = PrepareSendPackets(
"111003"
, list);
break
;
default
:
break
;
}
byte
[] outBuffer =
new
byte
[2048];
outBuffer = Encoding.GetEncoding(
"gbk"
).GetBytes(outBufferString);
clientSocket.Send(outBuffer, outBuffer.Length, 0);
byte
[] inBuffer =
new
byte
[51200];
clientSocket.Receive(inBuffer, inBuffer.Length, 0);
string
inBufferString =
"<?xml version='1.0' encoding='gb2312' ?> "
;
inBufferString += Encoding.GetEncoding(
"gbk"
).GetString(inBuffer);
DataTable dt = ParsingPackets(requestCode, inBufferString,
out
errMsg);
return
dt;
}
}
catch
(Exception ex)
{
throw
ex;
}
}