public static bool EnviarArquivoViaSocket(string PathCompletoComArquivo, int Codigo, int Versao, string EnderecoIPEnvia, string EnderecoIPResposta, int PortaEnvia, int PortaResposta, bool RetornoAssinado, out string MsgCliente) { try { string caminhoArquivo = Path.GetDirectoryName(PathCompletoComArquivo) + "\\"; string nomeArquivo = Path.GetFileName(PathCompletoComArquivo); string caminhoCompleto = caminhoArquivo + nomeArquivo; byte[] fileData = File.ReadAllBytes(caminhoCompleto); FileTransfer oFT = new FileTransfer(); oFT.Codigo = Codigo; oFT.Versao = Versao; oFT.FileName = nomeArquivo; oFT.IPResposta = EnderecoIPResposta; oFT.PortaRespostaAssinado = PortaResposta; oFT.FileBase64 = Convert.ToBase64String(fileData); oFT.RetornoAssinado = RetornoAssinado; oFT.UsuarioAutenticado = "1495"; byte[] clientData = ConverterObjeto.SerializaObjetoXMLByteArray(oFT); TcpClient clientSocket = new TcpClient(); clientSocket.ReceiveBufferSize = 1000; clientSocket.SendBufferSize = 1000; clientSocket.Connect(EnderecoIPEnvia, PortaEnvia); NetworkStream serverStream = clientSocket.GetStream(); serverStream.Write(clientData, 0, clientData.Length); serverStream.Flush(); clientSocket.Close(); MsgCliente = "Arquivo [" + caminhoCompleto + "] transferido."; return(true); } catch (Exception ex) { MsgCliente = ex.Message + "."; return(false); } }
private void IniciarServidor(int Porta) { byte[] bytesFrom = new byte[10000]; string dataFromClient = null; Byte[] sendBytes = null; string serverResponse = null; string MeuIP = Dns.GetHostAddresses(Dns.GetHostName())[0].ToString(); if (MeuIP == "::1") { MeuIP = Dns.GetHostAddresses(Dns.GetHostName())[1].ToString(); } TcpListener serverSocket = new TcpListener(IPAddress.Parse(MeuIP), Porta); serverSocket.Start(); int counter = 0; while (!ParaServidor) { counter += 1; TcpClient clientSocket = default(TcpClient); clientSocket = serverSocket.AcceptTcpClient(); clientSocket.ReceiveBufferSize = 10000; string str; using (NetworkStream stream = clientSocket.GetStream()) { byte[] data = new byte[1024]; using (MemoryStream ms = new MemoryStream()) { int numBytesRead; while ((numBytesRead = stream.Read(data, 0, data.Length)) > 0) { ms.Write(data, 0, numBytesRead); } str = Encoding.ASCII.GetString(ms.ToArray(), 0, (int)ms.Length); } oFT = (FileTransfer)ConverterObjeto.RetornaObjetoFT(str); //FileStream FS = new FileStream("C:\\Lixo.txt", FileMode.OpenOrCreate); //Byte[] info = ASCIIEncoding.ASCII.GetBytes(str); //FS.Write(info, 0, info.Length); //FS.Close(); ServerMsg = "Arquivo recebido"; ArquivoNovo = true; } clientSocket.Close(); } serverSocket.Stop(); }
public static string EnviaDados(IComunicacao Mensagem, string IP, int Porta = 27525) { TcpClient clientSocket = new TcpClient(); clientSocket.ReceiveBufferSize = 1000; clientSocket.Connect(IP, Porta); string ObjetoSerializado = ConverterObjeto.SerializaObjeto(Mensagem); NetworkStream serverStream = clientSocket.GetStream(); byte[] outStream = System.Text.Encoding.ASCII.GetBytes(ObjetoSerializado); serverStream.Write(outStream, 0, outStream.Length); serverStream.Flush(); byte[] inStream = new byte[1000]; serverStream.Read(inStream, 0, (int)clientSocket.ReceiveBufferSize); string returndata = System.Text.Encoding.ASCII.GetString(inStream); returndata = returndata.Substring(0, returndata.IndexOf("\0")); clientSocket.Close(); return(returndata); }
private void timer1_Tick(object sender, EventArgs e) { eTipoMensagem TipoMensagem; bool RecebeuMensagem = false; timer1.Enabled = false; string Mensagem = ""; //MENSAGEM VIA WEBSOCKET if (oWS.MensagemNova) { Mensagem = oWS.Mensagem; oWS.MensagemNova = false; oWS.Mensagem = ""; TipoMensagem = eTipoMensagem.WebSocket; RecebeuMensagem = true; } //MENSAGEM VIA SOCKET if (INB.Assinador.Integracao.Service.SocketWS.MensagemNova) { Mensagem = INB.Assinador.Integracao.Service.SocketWS.Mensagem; INB.Assinador.Integracao.Service.SocketWS.MensagemNova = false; INB.Assinador.Integracao.Service.SocketWS.Mensagem = ""; TipoMensagem = eTipoMensagem.WebSocket; RecebeuMensagem = true; } if (RecebeuMensagem) { Comunicacao oCom = null; //CONVERTE O TEXTO RECEBIDO EM OBJETO try { if (Ignorar(Mensagem)) { timer1.Enabled = true; return; } else { this.Visible = true; this.Focus(); this.WindowState = FormWindowState.Normal; this.BringToFront(); oCom = (Comunicacao)ConverterObjeto.RetornaObjeto(Mensagem); } } catch (Exception ex) { MessageBox.Show("Um erro ocorreu ao converter o objeto para o tipo Comunicacao. O processo precisa ser repetido e se o erro persistir, notifique o Help-Desk | Mensagem REcebida: " + Mensagem + " | Erro: " + ex.Message, ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); timer1.Enabled = true; return; } if (CboCertificados.Items.Count == 0 || CboCertificados.SelectedIndex == -1) { MessageBox.Show("Para a integração funcionar é necessário ter um certificado válido selecionado. Insira e selecione o certificado e repita o processo.", ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); timer1.Enabled = true; CboCertificados.Focus(); return; } try { byte[] Arquivo; try { Arquivo = Service.WSFile.getFile(oCom); try { MemoryStream ArquivoMS; if (ChkSalvaArquivo.Checked) { ArquivoMS = new MemoryStream(Arquivo); string path = System.AppDomain.CurrentDomain.BaseDirectory + "Temp\\"; string pathArquivoRecebido = path + oCom.Codigo.ToString() + "_" + oCom.Versao.ToString() + ".pdf"; using (FileStream fs = new FileStream(pathArquivoRecebido, FileMode.OpenOrCreate)) { ArquivoMS.CopyTo(fs); fs.Flush(); } ArquivoMS.Close(); string FileNameAssinado; if (AssinarArquivo(pathArquivoRecebido, out FileNameAssinado, true)) { byte[] ArquivoAssinado = INB.Assinador.Helper.FileHelper.ReadFile(FileNameAssinado); try { Service.WSFile.setFile(oCom, ArquivoAssinado); MessageBox.Show("Arquivo assinado com sucesso.", ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { MessageBox.Show("Ocorreu um erro na assinatura e o processo inteiro precisa ser refeito. Erro: " + ex.Message, ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); } } try { System.IO.File.Delete(FileNameAssinado); System.IO.File.Delete(pathArquivoRecebido); } catch (Exception ex) { } } else { byte[] ArquivoAssinado; if (AssinarArquivo(Arquivo, out ArquivoAssinado, true)) { try { Service.WSFile.setFile(oCom, ArquivoAssinado); MessageBox.Show("Arquivo assinado com sucesso.", ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { MessageBox.Show("Ocorreu um erro na assinatura e o processo inteiro precisa ser refeito. Erro: " + ex.Message, ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { MessageBox.Show("Um problema ocorreu no envio do arquivo assinado para o servidor. Assinatura não realizada. Repita todo o processo, por favor.", ProductName, MessageBoxButtons.OK); } } } catch (Exception ex) { MessageBox.Show("Ocorreu um erro no Sistema. Erro:" + ex.Message + ".", ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); } } catch (Exception ex) { MessageBox.Show("Ocorreu um erro ao acessar o WebService de leitura de arquivo do Sistema. Erro:" + ex.Message + ".", ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); } } catch (Exception ex) { MessageBox.Show("Um erro ocorreu ao tentar buscar o arquivo no Servidor.Erro: " + ex.Message + ".", ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); } } timer1.Enabled = true; }
private void IniciarServidor(int Porta) { byte[] bytesFrom = new byte[10000]; string dataFromClient = null; Byte[] sendBytes = null; string serverResponse = null; string MeuIP = Dns.GetHostAddresses(Dns.GetHostName())[0].ToString(); if (MeuIP == "::1") { MeuIP = Dns.GetHostAddresses(Dns.GetHostName())[1].ToString(); } TcpListener serverSocket = new TcpListener(IPAddress.Parse(MeuIP), Porta); serverSocket.Start(); int counter = 0; while (!ParaServidor) { counter += 1; TcpClient clientSocket = default(TcpClient); clientSocket = serverSocket.AcceptTcpClient(); clientSocket.ReceiveBufferSize = 10000; while (!ParaServidor) { if (clientSocket.Connected) { if (oServico.NovaMensagemS) { string ObjetoSerializado = ConverterObjeto.SerializaObjeto(oServico.MensagemS); NetworkStream serverStream = clientSocket.GetStream(); byte[] outStream = System.Text.Encoding.ASCII.GetBytes(ObjetoSerializado); serverStream.Write(outStream, 0, outStream.Length); serverStream.Flush(); byte[] inStream = new byte[1000]; serverStream.Read(inStream, 0, (int)clientSocket.ReceiveBufferSize); string returndata = System.Text.Encoding.ASCII.GetString(inStream); returndata = returndata.Substring(0, returndata.IndexOf("\0")); } if (oServico.NovaMensagemWS) { } } else { break; } //FileStream FS = new FileStream("C:\\Lixo.txt", FileMode.OpenOrCreate); //Byte[] info = ASCIIEncoding.ASCII.GetBytes(str); //FS.Write(info, 0, info.Length); //FS.Close(); } try { clientSocket.Close(); } catch (Exception ex) { } } serverSocket.Stop(); }