public void UpLoadFile(object Cnt)
        {
            Socket client = Cnt as Socket;

            //获取文件名 不包含存储路径
            string fullPath = System.Text.Encoding.Unicode.GetString(TransferFiles.ReceiveVarData(client));

            fullPath = FileSavePath + fullPath;

            FileInfo   EzoneFile   = new FileInfo(fullPath);                  //创建一个文件对象
            FileStream EzoneStream = EzoneFile.OpenRead();                    //打开文件流

            int PacketSize  = 1024 * 1024;                                    //包的大小1M
            int PacketCount = (int)(EzoneStream.Length / ((long)PacketSize)); //包的数量
            //最后一个包的大小
            int LastDataPacket = (int)(EzoneStream.Length - ((long)(PacketSize * PacketCount)));

            //发送[文件名]到服务器端
            TransferFiles.SendVarData(client, System.Text.Encoding.Unicode.GetBytes(EzoneFile.Name));
            //发送[包的大小]到服务器端
            TransferFiles.SendVarData(client, System.Text.Encoding.Unicode.GetBytes(PacketSize.ToString()));
            //发送[包的总数量]到服务器端
            TransferFiles.SendVarData(client, System.Text.Encoding.Unicode.GetBytes(PacketCount.ToString()));
            //发送[最后一个包的大小]到服务器端
            TransferFiles.SendVarData(client, System.Text.Encoding.Unicode.GetBytes(LastDataPacket.ToString()));

            //bool IsTransferOk = false;
            byte[] data = new byte[PacketSize];   //数据包

            for (int i = 0; i < PacketCount; i++) //开始循环发送数据包
            {
                //从文件流读取数据并填充数据包
                EzoneStream.Read(data, 0, data.Length);
                //发送数据包
                if (TransferFiles.SendVarData(client, data) == 3)
                {
                    //IsTransferOk = true;
                    MessageBox.Show("文件传输出错!");
                }
            }

            if (LastDataPacket != 0)  //如果还有多余的数据包,则应该发送完毕!
            {
                data = new byte[LastDataPacket];
                EzoneStream.Read(data, 0, data.Length);
                TransferFiles.SendVarData(client, data);
            }

            client.Close();      //关闭套接字
            EzoneStream.Close(); //关闭文件流
            connections--;
            this.SetText("\n" + "客户关闭连接:" + connections + "个连接数\n");
            this.SetText("传输完成!\n");
        }
        public static void ServerActiveAsk()
        {
            IPEndPoint ipep      = new IPEndPoint(IPAddress.Parse(MonitorAddress.IP), MonitorAddress.Port); //指向远程服务端节点
            Socket     AskSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            try
            {
                AskSocket.Connect(ipep);  //连接到Monitor
            }
            catch
            {
                Console.WriteLine("连接服务器出错!");
                return;//能否直接跳出?
            }
            //获得客户端节点对象
            IPEndPoint clientep = (IPEndPoint)AskSocket.RemoteEndPoint;

            //发送操作命令
            TransferFiles.SendVarData(AskSocket, System.Text.Encoding.Unicode.GetBytes("Pulse"));

            AskSocket.Close();
        }
        public void ConnetMonitor()
        {
            IPEndPoint ipep      = new IPEndPoint(IPAddress.Parse("192.168.3.32"), 30000); //指向远程服务端节点
            Socket     AskSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            try
            {
                AskSocket.Connect(ipep);  //连接到Monitor
            }
            catch
            {
                SetText("\r\n连接服务器出错,请重启程序...");
                AskSocket.Close();
                return;
            }
            //获得客户端节点对象
            IPEndPoint clientep = (IPEndPoint)AskSocket.RemoteEndPoint;

            //发送操作命令
            TransferFiles.SendVarData(AskSocket, System.Text.Encoding.Unicode.GetBytes("ServerRegister"));

            AskSocket.Close();
        }
        public void BackupFile(object Cnt)
        {
            string ffname = Cnt as string;

            IPEndPoint ipep      = new IPEndPoint(IPAddress.Parse(MonitorAddress.IP), MonitorAddress.Port); //指向远程服务端节点
            Socket     askSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            try
            {
                askSocket.Connect(ipep);  //连接到Monitor
            }
            catch
            {
                SetText("连接服务器出错!");
                askSocket.Close();
                return;
            }

            //获得客户端节点对象
            IPEndPoint bakipep = (IPEndPoint)askSocket.RemoteEndPoint;

            //发送操作命令
            TransferFiles.SendVarData(askSocket, System.Text.Encoding.Unicode.GetBytes("Backup"));
            //发送文件名
            TransferFiles.SendVarData(askSocket, System.Text.Encoding.Unicode.GetBytes(ffname));
            //备份IP地址
            string bakaddress = System.Text.Encoding.Unicode.GetString(TransferFiles.ReceiveVarData(askSocket));

            string[] IPstrArray = bakaddress.Split(new string[] { "@", "/" }, StringSplitOptions.RemoveEmptyEntries);
            askSocket.Close();


            IPEndPoint iipep    = new IPEndPoint(IPAddress.Parse(IPstrArray[0]), Convert.ToInt32(IPstrArray[1])); //指向远程服务端节点
            Socket     ssSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            try
            {
                ssSocket.Connect(iipep);  //连接到Monitor
            }
            catch
            {
                SetText("连接服务器出错!");
                ssSocket.Close();
                return;
            }

            //获取文件名 不包含存储路径
            string fullPath = FileSavePath + ffname;

            FileInfo   EzoneFile   = new FileInfo(fullPath);                  //创建一个文件对象
            FileStream EzoneStream = EzoneFile.OpenRead();                    //打开文件流

            int PacketSize  = 1024 * 1024;                                    //包的大小1M
            int PacketCount = (int)(EzoneStream.Length / ((long)PacketSize)); //包的数量
            //最后一个包的大小
            int LastDataPacket = (int)(EzoneStream.Length - ((long)(PacketSize * PacketCount)));

            //发送命令码
            TransferFiles.SendVarData(ssSocket, System.Text.Encoding.Unicode.GetBytes("Backup"));
            //发送[文件名]到服务器端
            TransferFiles.SendVarData(ssSocket, System.Text.Encoding.Unicode.GetBytes(EzoneFile.Name));
            //发送[包的大小]到服务器端
            TransferFiles.SendVarData(ssSocket, System.Text.Encoding.Unicode.GetBytes(PacketSize.ToString()));
            //发送[包的总数量]到服务器端
            TransferFiles.SendVarData(ssSocket, System.Text.Encoding.Unicode.GetBytes(PacketCount.ToString()));
            //发送[最后一个包的大小]到服务器端
            TransferFiles.SendVarData(ssSocket, System.Text.Encoding.Unicode.GetBytes(LastDataPacket.ToString()));

            byte[] data = new byte[PacketSize];   //数据包

            for (int i = 0; i < PacketCount; i++) //开始循环发送数据包
            {
                //从文件流读取数据并填充数据包
                EzoneStream.Read(data, 0, data.Length);
                //发送数据包
                if (TransferFiles.SendVarData(ssSocket, data) == 3)
                {
                    MessageBox.Show("文件传输出错!");
                }
            }

            if (LastDataPacket != 0)  //如果还有多余的数据包,则应该发送完毕!
            {
                data = new byte[LastDataPacket];
                EzoneStream.Read(data, 0, data.Length);
                TransferFiles.SendVarData(ssSocket, data);
            }

            EzoneStream.Close(); //关闭文件流
            ssSocket.Close();    //关闭套接字
            this.SetText(ffname + "文件已备份到Server:" + IPstrArray[0] + "\n");
        }
        public void DataReturn(string fname)
        {
            string fn = fname;
            //获取文件名 不包含存储路径

            IPEndPoint ipep     = new IPEndPoint(IPAddress.Parse(MonitorAddress.IP), MonitorAddress.Port); //指向远程服务端节点
            Socket     ssSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            try
            {
                ssSocket.Connect(ipep);  //连接到Monitor
            }
            catch
            {
                SetText("连接服务器出错!");
                ssSocket.Close();
                return;
            }
            string fullPath = FileSavePath + fname;

            FileInfo   EzoneFile   = new FileInfo(fullPath);                  //创建一个文件对象
            FileStream EzoneStream = EzoneFile.OpenRead();                    //打开文件流

            int PacketSize  = 1024 * 1024;                                    //包的大小1M
            int PacketCount = (int)(EzoneStream.Length / ((long)PacketSize)); //包的数量
            //最后一个包的大小
            int LastDataPacket = (int)(EzoneStream.Length - ((long)(PacketSize * PacketCount)));

            //发送命令码
            TransferFiles.SendVarData(ssSocket, System.Text.Encoding.Unicode.GetBytes("ProcessReturn"));
            //发送[文件名]到服务器端
            TransferFiles.SendVarData(ssSocket, System.Text.Encoding.Unicode.GetBytes(EzoneFile.Name));
            //发送[包的大小]到服务器端
            TransferFiles.SendVarData(ssSocket, System.Text.Encoding.Unicode.GetBytes(PacketSize.ToString()));
            //发送[包的总数量]到服务器端
            TransferFiles.SendVarData(ssSocket, System.Text.Encoding.Unicode.GetBytes(PacketCount.ToString()));
            //发送[最后一个包的大小]到服务器端
            TransferFiles.SendVarData(ssSocket, System.Text.Encoding.Unicode.GetBytes(LastDataPacket.ToString()));

            byte[] data = new byte[PacketSize];   //数据包

            for (int i = 0; i < PacketCount; i++) //开始循环发送数据包
            {
                //从文件流读取数据并填充数据包
                EzoneStream.Read(data, 0, data.Length);
                //发送数据包
                if (TransferFiles.SendVarData(ssSocket, data) == 3)
                {
                    MessageBox.Show("文件传输出错!");
                }
            }

            if (LastDataPacket != 0)  //如果还有多余的数据包,则应该发送完毕!
            {
                data = new byte[LastDataPacket];
                EzoneStream.Read(data, 0, data.Length);
                TransferFiles.SendVarData(ssSocket, data);
            }

            EzoneStream.Close(); //关闭文件流
            ssSocket.Close();    //关闭套接字
            this.SetText(fname + "回传成功!" + "\n");
        }