/// <summary> /// 发送字节流 /// </summary> /// <param name="server">targetIP</param> /// <param name="message">byte[] message</param> /// <returns></returns> public static ResultInfo SendMessage(string server, byte[] message) { bool status = false; int resultCode = 0; string Num = string.Empty; string CMD = string.Empty; string resultMessage = string.Empty; TcpClient client = new TcpIpHelper(server).Connect(); NetworkStream ns = client.GetStream(); try { Byte[] sendData = message; log.DebugFormat("发送消息到【{0}】,内容为:{1},\r\n*********len:{2}", server, DefaultEncoding.GetString(message), sendData.Length); ns.Write(sendData, 0, sendData.Length);//写入字节流 //接收服务端的响应数据 byte[] recieveData = new Byte[1024]; string responseData = string.Empty; ns.ReadTimeout = RECEIVE_TIMEOUT;//读取服务端返回信息超时时间(ms),建议配置在webconfig中 xyl 2013-03-07 Int32 bytes = ns.Read(recieveData, 0, recieveData.Length); responseData = System.Text.Encoding.Default.GetString(recieveData, 0, bytes); log.DebugFormat("接收消息到【{0}】,内容为:{1}", server, responseData); //处理返回信息,返回数据为xml格式的字串 //1、操作成功:status = true GetResultXML(responseData, out Num, out CMD, out status, out resultCode, out resultMessage); //status = true; //resultMessage = "操作成功"; //2、操作失败:status = false //status = false; //resultMessage = "从返回结果中解析并说明失败原因"; } catch (Exception e) { //异常处理 SocketException se = (SocketException)e.InnerException.GetBaseException(); string msg = string.Empty; switch (se.ErrorCode) { case 10060: msg = string.Format(" 连接<font color=blue>控制系统 <b>{0}</b></font>处理超时", server); break; case 10061: msg = string.Format(" 连接<font color=blue>控制系统 <b>{0}</b></font> 超时,可能原因是机器或打料系统未启动", server); break; case 10065: msg = string.Format(" 无法连接<font color=blue>控制系统 <b>{0}</b></font>,可能网线没有插好,请检查网络连接!", server); break; default: msg = se.Message; break; } log.Error(msg); throw new Exception(msg); } finally { //关闭流 ns.Close(); //关闭连接 client.Close(); } return(new ResultInfo { Result = status, ResultCode = resultCode, Message = "[控制系统:" + server + "]" + resultMessage }); }
/// <summary> /// 发送字符串 /// </summary> /// <param name="server"></param> /// <param name="message">message信息为xml形式的字串</param> public static dynamic SendMessage(string server, string message) { bool status = false; int resultCode = 0; string Num = string.Empty; string CMD = string.Empty; string resultMessage = string.Empty; try { TcpClient client = new TcpIpHelper(server).Connect(); Byte[] sendData = DefaultEncoding.GetBytes(message); NetworkStream ns = client.GetStream(); log.DebugFormat("发送消息到【{0}】,内容为:{1}", server, message); ns.Write(sendData, 0, sendData.Length);//写入字节流 //接收服务端的响应数据 byte[] recieveData = new Byte[1024]; string responseData = string.Empty; ns.ReadTimeout = client.ReceiveTimeout; Int32 bytes = ns.Read(recieveData, 0, recieveData.Length); responseData = System.Text.Encoding.Default.GetString(recieveData, 0, bytes); log.DebugFormat("接收消息到【{0}】,内容为:{1}", server, responseData); GetResultXML(responseData, out Num, out CMD, out status, out resultCode, out resultMessage); //处理返回信息,返回数据为xml格式的字串 //1、操作成功:status = true //status = true; //resultMessage = "操作成功"; //2、操作失败:status = false //status = false; //resultMessage = "从返回结果中解析并说明失败原因"; //关闭流 ns.Close(); //关闭连接 client.Close(); } catch (Exception e) { //异常处理 SocketException se = (SocketException)e.InnerException.GetBaseException(); string msg = string.Empty; switch (se.ErrorCode) { case 10060: msg = string.Format(" 连接<font color=blue>控制系统 <b>{0}</b></font>处理超时", server); break; case 10061: msg = string.Format(" 连接<font color=blue>控制系统 <b>{0}</b></font> 超时,可能原因是机器或打料系统未启动", server); break; case 10065: msg = string.Format(" 无法连接<font color=blue>控制系统 <b>{0}</b></font>,可能网线没有插好,请检查网络连接!", server); break; default: msg = se.Message; break; } log.Error(msg); throw new Exception(msg); } return(new { Status = status, ResultCode = resultCode, Message = message }); }