/// <summary> /// 插入执行命令 /// </summary> public void InsertExecCommand(ExecCommand execInfo) { // 申請互斥鎖 CallMutex.WaitOne(); //添加Call Back execCmds.Add(execInfo); // 释放互斥鎖 CallMutex.ReleaseMutex(); }
/// <summary> /// 移除执行命令 /// </summary> public void RemoveExecCommand(ExecCommand execInfo) { // 申請互斥鎖 CallMutex.WaitOne(); //移除Call Back execCmds.Remove(execInfo); // 释放互斥鎖 CallMutex.ReleaseMutex(); }
/// <summary> /// CallBack连接 /// </summary> /// <param name="obj"></param> public void CallBackConnection(object obj) { bool isSend = false; ExecCommand c = (ExecCommand)obj; byte[] buffer = new byte[1024]; //设置连接服务器IP地址,Ip端口 IPAddress ipAddress = IPAddress.Parse(c.callIP); IPEndPoint remoteEP = new IPEndPoint(ipAddress, c.callPort); //定义连接Socket Socket workSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); try { workSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 10000); //开始连接到远程计算机 workSocket.Connect(remoteEP); //发送登陆字节+命令指令 LoopSend(workSocket, buffer, getSendBytes(c.command)); //禁用Socket接收发送 workSocket.Shutdown(SocketShutdown.Both); //关闭客户端Socket workSocket.Close(); } catch (SocketException e) { if (workSocket != null && workSocket.Connected) { //禁用Socket接收发送 workSocket.Shutdown(SocketShutdown.Both); } //关闭客户端Socket workSocket.Close(); calls[c.index].isConnection = false; if (msgTo != null) { msgTo(new execIpInfo(calls[c.index].callIP, calls[c.index].callPort, false, false)); } isSend = true; } if (!isSend && msgTo != null) { msgTo(new execIpInfo(calls[c.index].callIP, calls[c.index].callPort, true, true)); } calls[c.index].isExec = false; }