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); } } }
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(); } }