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 SyncRecieve(TcpListener tcpListener) { while (!_shouldStop) { var protocol = new TCPProtocol(); protocol.Listen(tcpListener); try { var mensaje = protocol.RecieveMessage(); if (mensaje.Header == MessageTypeEnum.REQ && mensaje.Cmd == CommandEnum.Backup) { //Recibo un req para listar archivos por este puerto, se que es un pedido de sync var response = new ListFilesResponse(); try { response.Cmd = CommandEnum.ListFiles; response.Result = TransferResponseEnum.OK; StringBuilder sb = new StringBuilder(); foreach (var file in ServerData.Instance.FileList) { sb.Append(file); sb.Append(","); } response.Data = sb.ToString(); response.FileLength = sb.Length; //Envio respuesta protocol.SendMessage(response); } catch (Exception ex) { response.Result = TransferResponseEnum.ConnectionError; protocol.SendMessage(response); } } else if (mensaje.Header == MessageTypeEnum.REQ && mensaje.Cmd == CommandEnum.Download) { this.DownloadFile(protocol, (DownloadRequest)mensaje); } } catch (Exception ex) { Console.WriteLine(string.Format("Error enviando datos {0}", ex.Message)); } } }