public void Send(object Message) { try { //Message = Message.ToString().Replace("\r", ""); //Message = "MOV:ORGSH;"; ////chkSum //string needSckSumStr = Convert.ToChar(0) + "" + Convert.ToChar(Message.ToString().Length + 4) + "" + Convert.ToChar(48) + "" + Convert.ToChar(48) + Message.ToString(); //byte[] t = new byte[Encoding.ASCII.GetByteCount(needSckSumStr)]; ; //int ttt = Encoding.ASCII.GetBytes(needSckSumStr, 0, Encoding.ASCII.GetByteCount(needSckSumStr), t, 0); //byte tt = 0; //for (int i = 0; i < t.Length; i++) //{ // tt += t[i]; //} //string csHex = tt.ToString("X"); ////chkSum //string cmd = Convert.ToChar(1) + "" + Convert.ToChar(0) + "" + Convert.ToChar(Message.ToString().Length + 4) + "" + Convert.ToChar(48) + "" + Convert.ToChar(48) + Message.ToString() + csHex + Convert.ToChar(3); port.Write(Message.ToString()); } catch (Exception e) { //logger.Error("(ConnectServer " + RmIp + ":" + SPort + ")" + e.Message + "\n" + e.StackTrace); ConnReport.On_Connection_Error("(ConnectServer )" + e.Message + "\n" + e.StackTrace); } }
private void ConnectServer(object input) { ConnReport.On_Connection_Connecting("[" + Config.DeviceName + "] Connecting"); //先建立IPAddress物件,IP為欲連線主機之IP IPAddress ipa = IPAddress.Parse(Config.IPAdress); //建立IPEndPoint IPEndPoint ipe = new IPEndPoint(ipa, Config.Port); //開始連線 try { tcpClient.Connect(ipe); if (tcpClient.Connected) { ConnReport.On_Connection_Connected("[" + Config.DeviceName + "] Connected"); ThreadPool.QueueUserWorkItem(new WaitCallback(Receive)); } else { ConnReport.On_Connection_Error(Config.DeviceName + "Error"); } } catch (Exception e) { tcpClient.Close(); logger.Error("[" + Config.DeviceName + "] 連線失敗" + e.StackTrace); ConnReport.On_Connection_Error("[" + Config.DeviceName + "] " + e.Message + "\n" + e.StackTrace); } }
public void Send(object Message) { logger.Debug(this.cfg.GetDeviceName() + " Send:" + Message); try { if (cfg.GetVendor().ToUpper().Equals("ACDT")) { string hexString = Message.ToString().Replace("-", ""); byte[] byteOUT = new byte[hexString.Length / 2]; for (int i = 0; i < hexString.Length; i = i + 2) { //每2位16進位數字轉換為一個10進位整數 byteOUT[i / 2] = Convert.ToByte(hexString.Substring(i, 2), 16); } port.Write(byteOUT, 0, byteOUT.Length); } else { port.Write((string)Message); //int ttt = port.ReadByte(); //byte[] buf = new byte[250]; //port.Read(buf, 0, buf.Length); //string data = ByteArrayToString(buf); } } catch (Exception e) { //logger.Error("(ConnectServer " + RmIp + ":" + SPort + ")" + e.Message + "\n" + e.StackTrace); ConnReport.On_Connection_Error("(ConnectServer )" + e.Message + "\n" + e.StackTrace); } }
/// /// 創建套接字+異步連接函數 /// /// private bool socket_create_connect() { try { IPAddress ipAddress = IPAddress.Parse(remoteHost); IPEndPoint remoteEP = new IPEndPoint(ipAddress, remotePort); theSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); theSocket.SendTimeout = 1000; SetHeartBeat();//設置心跳參數 #region 異步連接代碼 TimeoutObject.Reset(); //覆位timeout事件 try { ConnReport.On_Connection_Connecting("Connecting"); theSocket.BeginConnect(remoteEP, connectedCallback, theSocket); } catch (Exception err) { SockErrorStr = err.ToString(); ConnReport.On_Connection_Error(err.Message); return(false); } if (TimeoutObject.WaitOne(10000, false))//直到timeout,或者TimeoutObject.set() { if (IsconnectSuccess) { return(true); } else { return(false); } } else { SockErrorStr = "Time Out"; ConnReport.On_Connection_Error("Time Out"); return(false); } #endregion } catch (Exception e) { FormMainUpdate.LogUpdate(e.StackTrace + ":" + e.Message); FormMainUpdate.AlarmUpdate(true); return(false); } }
public bool Send(object Message) { try { port.Write(Message.ToString()); return(true); } catch (Exception e) { //logger.Error("(ConnectServer " + RmIp + ":" + SPort + ")" + e.Message + "\n" + e.StackTrace); ConnReport.On_Connection_Error("(ConnectServer )" + e.Message + "\n" + e.StackTrace); return(false); } }
/// /// 創建套接字+異步連接函數 /// /// private bool socket_create_connect() { IPAddress ipAddress = IPAddress.Parse(remoteHost); IPEndPoint remoteEP = new IPEndPoint(ipAddress, remotePort); theSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); theSocket.SendTimeout = 1000; theSocket.ReceiveTimeout = 1000; SetHeartBeat();//设置心跳参数 #region 异步连接代码 TimeoutObject.Reset(); //复位timeout事件 try { ConnReport.On_Connection_Connecting("Connecting"); theSocket.BeginConnect(remoteEP, connectedCallback, theSocket); } catch (Exception err) { SockErrorStr = err.ToString(); ConnReport.On_Connection_Error(err.Message); return(false); } if (TimeoutObject.WaitOne(10000, false))//直到timeout,或者TimeoutObject.set() { if (IsconnectSuccess) { return(true); } else { return(false); } } else { SockErrorStr = "Time Out"; return(false); } #endregion }
void IConnectionReport.On_Connection_Error(object MsgObj) { this._IsConnected = false; this.processState = DeviceController.PROCESS_STATE_CONNECT_ERROR; if (ConnReport != null) { ConnReport.On_Connection_Error(_Config); } }
private void ConnectServer() { try { ConnReport.On_Connection_Connecting("Connecting to " + RmIp + ":" + SPort); SckSPort = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //SckSPort.ReceiveTimeout = 1000; SckSPort.Connect(new IPEndPoint(IPAddress.Parse(RmIp), SPort)); //SckSPort.IOControl(IOControlCode.KeepAliveValues) // RmIp和SPort分別為string和int型態, 前者為Server端的IP, 後者為Server端的Port if (!SckSPort.Connected) { ConnReport.On_Connection_Error("Connect to " + RmIp + ":" + SPort + " Fail!"); //logger.Error("Connect to " + RmIp + ":" + SPort + " Fail!"); return; } else { //logger.Info("Connected! " + RmIp + ":" + SPort); ConnReport.On_Connection_Connected("Connected! " + RmIp + ":" + SPort); } // 同 Server 端一樣要另外開一個執行緒用來等待接收來自 Server 端傳來的資料, 與Server概念同 Thread SckSReceiveTd = new Thread(SckSReceiveProc); SckSReceiveTd.IsBackground = true; SckSReceiveTd.Start(); //Thread CheckAvailableTd = new Thread(CheckAvailable); //CheckAvailableTd.IsBackground = true; //CheckAvailableTd.Start(); } catch (Exception e) { //logger.Error("(ConnectServer " + RmIp + ":" + SPort + ")" + e.Message + "\n" + e.StackTrace); ConnReport.On_Connection_Error("(ConnectServer " + RmIp + ":" + SPort + ")" + e.Message + "\n" + e.StackTrace); } }
public bool Send(object Message) { try { NetworkStream ns = tcpClient.GetStream(); if (ns.CanWrite) { byte[] msgByte = Encoding.Default.GetBytes(Message.ToString()); ns.Write(msgByte, 0, msgByte.Length); } else { return(false); } } catch (Exception e) { //logger.Error(e.StackTrace); ConnReport.On_Connection_Error("(ConnectServer )" + e.Message + "\n" + e.StackTrace); return(false); } return(true); }
private void ConnectServer(object input) { ConnReport.On_Connection_Connecting("Connecting"); //先建立IPAddress物件,IP為欲連線主機之IP IPAddress ipa = IPAddress.Parse(Config.GetIPAdress()); //建立IPEndPoint IPEndPoint ipe = new IPEndPoint(ipa, Config.GetPort()); //開始連線 try { //tcpClient.ReceiveTimeout = 1000; tcpClient.Connect(ipe); //bool success = false; //while (!success) //{ // var result = tcpClient.BeginConnect("remotehost", Config.Port, null, null); // success = result.AsyncWaitHandle.WaitOne(TimeSpan.FromSeconds(1)); // if (!success) // { // logger.Error(Config.DeviceName+" ip="+Config.IPAdress+":"+Config.Port.ToString()+" connect timeout!"); // } // else // { // break; // } //} if (tcpClient.Connected) { ConnReport.On_Connection_Connected("Connected"); ThreadPool.QueueUserWorkItem(new WaitCallback(Receive)); } else { ConnReport.On_Connection_Error("Error"); } } catch (Exception e) { tcpClient.Close(); logger.Error(e.StackTrace); } }