/// <summary>
/// 发送数据
/// </summary>
/// <param name="xml"></param>
private bool SendMessage(string xml,out string msg)
{
xml = (xml.Length + 6).ToString().PadLeft(6, '0') + xml;
WriteLog("请求:" + xml);
bool retb = false;
string server = tbEqIP.Text.Trim();
int port = Convert.ToInt32(tbEqPort.Text.Trim());
System.Net.Sockets.TcpClient client = new System.Net.Sockets.TcpClient();
System.Net.Sockets.NetworkStream stream = null;
try
{
client.ReceiveTimeout = 60 * 1000;
client.Connect(server, port);
stream = client.GetStream();
byte[] buf = Encoding.UTF8.GetBytes(xml);
//string encoding = edEncoding.Text.Trim();
//Coder coder = new Coder(encoding);
//byte[] buf = coder.GetEncodingBytes(xml);
stream.Write(buf, 0, buf.Length);
//string msgAll = string.Format("{0,10:d}{1:s}", buf.Length, xml);
//byte[] bufAll = coder.GetEncodingBytes(msgAll);
//stream.Write(bufAll, 0, bufAll.Length);
stream.Flush();
//if (checkBox1.Checked)
//{
//byte[] buffer = new Byte[1024];
//int received = stream.Read(buffer, 0, 1024);
byte[] buffer = new Byte[4096];
int received = stream.Read(buffer, 0, 4096);
if (received <= 0)
{
msg = "数据读取失败";//读取失败
//throw new Exception("数据读取失败");
}
else
{
msg = Encoding.UTF8.GetString(buffer).Replace("\0",null);
WriteLog("应答:" + msg);
//处理头部信息
int len = Convert.ToInt32(msg.Substring(0, 6));
if (len != msg.Length)
{
retb = false;
msg = "报文长度与实际长度不一致";
}
else
{
//去掉报文头
msg = msg.Substring(32);
retb = true;
}
}
//retMsg = coder.GetEncodingString(buffer, received);
//}
}
catch (Exception ex)
{
retb = false;
msg = ex.Message;
}
finally
{
if (stream != null)
stream.Close();
if (client.Connected)
client.Close();
}
return retb;
}