Exemplo n.º 1
0
 /// <summary>
 /// 插入执行命令
 /// </summary>
 public void InsertExecCommand(ExecCommand execInfo)
 {
     // 申請互斥鎖
     CallMutex.WaitOne();
     //添加Call Back
     execCmds.Add(execInfo);
     // 释放互斥鎖
     CallMutex.ReleaseMutex();
 }
Exemplo n.º 2
0
 /// <summary>
 /// 移除执行命令
 /// </summary>
 public void RemoveExecCommand(ExecCommand execInfo)
 {
     // 申請互斥鎖
     CallMutex.WaitOne();
     //移除Call Back
     execCmds.Remove(execInfo);
     // 释放互斥鎖
     CallMutex.ReleaseMutex();
 }
Exemplo n.º 3
0
        /// <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;
        }