コード例 #1
0
        public List <string> ListFiles()
        {
            var protocol = new TCPProtocol();

            try
            {
                var request = new ListFilesRequest();

                //Me conecto al servidor de archivos
                protocol.ConnectClient(ClientData.Instance.ServerIP, ClientData.Instance.ServerPort);

                SendRemotingConnectionRequest();

                //Envio pedido y obtengo respuesta
                var response = request.ListFiles(protocol);


                List <string> fileList = response.Data.Split(',').ToList();
                fileList.Remove(fileList.Last());
                CurrentStatus = "Listado recibido con exito.";
                return(fileList);
            }
            catch (Exception e)
            {
                CurrentStatus = "Ocurrio un error desconocido.";
                return(new List <string>());
            }
            finally
            {
                protocol.Disconnect();
                SendRemotingDisconnectionRequest();
            }
        }
コード例 #2
0
        public void SyncServers()
        {
            var protocol = new TCPProtocol();

            try
            {
                var request = new ListFilesRequest();

                //Me conecto al servidor de archivos
                protocol.ConnectClient(ClientData.Instance.ServerIP, ClientData.Instance.ServerPort);

                SendRemotingConnectionRequest();

                //Reutilizo este mensaje, cambiandole el CMD
                request.Cmd = CommandEnum.Backup;
                //Envio pedido
                var response = request.ListFiles(protocol);
            }
            catch
            {
                CurrentStatus = "Ocurrio un error.";
            }
            finally
            {
                protocol.Disconnect();
                SendRemotingDisconnectionRequest();
            }
        }
コード例 #3
0
        public void Listen(TcpListener tcpListener)
        {
            while (!_shouldStop)
            {
                var protocol   = new TCPProtocol();
                var clientName = String.Empty;
                protocol.Listen(tcpListener);

                try
                {
                    var message = protocol.RecieveMessage();
                    clientName = message.ClientName;

                    //Le comunico al servidor de conciliacion que un cliente se conecto.
                    var remotingRequest = new ClientConnectionRequest()
                    {
                        ClientName = clientName
                    };
                    _remotingService.SendMessage(remotingRequest);

                    if (message.Header == MessageTypeEnum.REQ)
                    {
                        if (message.Cmd == CommandEnum.Download)
                        {
                            DownloadFile(protocol, (DownloadRequest)message);
                        }
                        else if (message.Cmd == CommandEnum.Upload)
                        {
                            UploadFile(protocol, (UploadRequest)message);
                        }
                        else if (message.Cmd == CommandEnum.ListFiles)
                        {
                            SendFileList(protocol, (ListFilesRequest)message);
                        }
                        else if (message.Cmd == CommandEnum.Backup)
                        {
                            SyncFiles(protocol, (ListFilesRequest)message);
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Ocurrio un error.", ex.Message);
                }
                finally
                {
                    protocol.Disconnect();
                    //Le comunico al servidor de conciliacion que un cliente se desconecto.
                    var remotingRequest = new ClientDisconnectionRequest()
                    {
                        ClientName = clientName
                    };
                    _remotingService.SendMessage(remotingRequest);
                }
            }
        }
コード例 #4
0
        public void DownloadFile(string fileName)
        {
            var protocol = new TCPProtocol();

            try
            {
                string path = string.Format("{0}\\{1}", ClientData.Instance.FileRepository, fileName);

                var request = new DownloadRequest();
                request.ClientName = ClientData.Instance.ClientName;
                request.FileName   = fileName;
                request.Rest       = FileHelper.FileExists(path) ? FileHelper.ReadFile(path).LongLength : 0;

                //Me conecto al servidor de archivos
                protocol.ConnectClient(ClientData.Instance.ServerIP, ClientData.Instance.ServerPort);

                SendRemotingConnectionRequest();

                var response = request.DownloadFile(protocol, ClientData.Instance.FileRepository);

                //Le comunico al servidor de registro de pedi descargar un archivo.
                var remotingRequest = new ClientDownloadRequest()
                {
                    ClientName = ClientData.Instance.ClientName,
                    FileName   = fileName
                };
                _remotingService.SendMessage(remotingRequest);

                if (response.Result == TransferResponseEnum.OK)
                {
                    CurrentStatus = "Archivo descargado con exito";
                }
                else if (response.Result == TransferResponseEnum.FileDoesntExist)
                {
                    CurrentStatus = "Error el archivo que quiere descargar no existe. Actualize la lista de archivos.";
                }
                else if (response.Result == TransferResponseEnum.ConnectionError)
                {
                    CurrentStatus = "Ocurrio un error de conexion.";
                }
                else
                {
                    CurrentStatus = "Ocurrio un error desconocido.";
                }
            }
            catch
            {
                CurrentStatus = "Ocurrio un error desconocido.";
            }
            finally
            {
                protocol.Disconnect();
                SendRemotingDisconnectionRequest();
            }
        }
コード例 #5
0
        public void SendFile(string pathArchivo)
        {
            var portocol = new TCPProtocol();

            try
            {
                //Obtengo el archivo
                byte[] fileBytes = FileHelper.ReadFile(pathArchivo);

                var request = new UploadRequest();
                request.ClientName = ClientData.Instance.ClientName;
                request.FileName   = Path.GetFileName(pathArchivo);
                request.FileLength = fileBytes.LongLength;
                request.File       = fileBytes;

                //Me conecto al servidor de archivos
                portocol.ConnectClient(ClientData.Instance.ServerIP, ClientData.Instance.ServerPort);

                SendRemotingConnectionRequest();

                //Envio el archivo y obtengo respuesta
                var response = request.SendFile(portocol);

                //Le comunico al servidor de registro de pedi subir un archivo.
                var remotingRequest = new ClientUploadRequest()
                {
                    ClientName = ClientData.Instance.ClientName,
                    FileName   = Path.GetFileName(pathArchivo)
                };
                _remotingService.SendMessage(remotingRequest);

                if (response.Result == TransferResponseEnum.OK)
                {
                    CurrentStatus = "Archivo subido con exito";
                }
                else if (response.Result == TransferResponseEnum.FileExists)
                {
                    CurrentStatus = "Error: El archivo ya existia en el servidor.";
                }
                else
                {
                    CurrentStatus = "Ocurrio un error.";
                }
            }
            catch
            {
                CurrentStatus = "Ocurrio un error.";
            }
            finally
            {
                portocol.Disconnect();
                SendRemotingDisconnectionRequest();
            }
        }