PROBLEMAS DE ENVIO DE DADOS COM WINSOCK PARTE2...
Olá amigos, em foco o TONARES25,
Cara estou tendo um problema parecido com o seu... estou trabalhando com um coletor de dados, onde que ao enviar o arquivo com mais de 25 linhas de registro esta perdendo dados.... o "engraçado" que o problema só acontece do coletor para o servidor, pois o processo inverso consigo madar de uma só tacada... então vou ter quer alterar o tratamento do arquivo quando vem do coletor.
Resolvi fazer o seguinte:
[txt-color=#ff0000]- O Coletor solicita conexão...
- O Coletor manda o "nome do arquivo";
- O Servidor responde que recebeu o nome do arquivo e solicita o "Header"
- O Coletor envia o "Header do arquivo"; até aà blz!!;
- O Servidor responde que recebeu o Header do arquivo e solicita a linhas de "detalhes", o coletor fica assim mandando a linha de "detalhe" até receber que o Servidor receba o "Trailler", tipo a linha de fim de arquivo... e o Servidor responde com um "fim de arquivo" e fecha a conexão.[/txt-color]
Este é o processo que desejo implementar no sistema...
até o momento fiz de duas maneiras e ambas nao consigo fazer a segunda conexão...
Alguém poderia me ajudar ou dar-me uma dica para solucionar o meu problema?
muito obrigado mesmo..
Tenho um pouco de pressa para solucionar este problema..
Jefferson.
Cara estou tendo um problema parecido com o seu... estou trabalhando com um coletor de dados, onde que ao enviar o arquivo com mais de 25 linhas de registro esta perdendo dados.... o "engraçado" que o problema só acontece do coletor para o servidor, pois o processo inverso consigo madar de uma só tacada... então vou ter quer alterar o tratamento do arquivo quando vem do coletor.
Resolvi fazer o seguinte:
[txt-color=#ff0000]- O Coletor solicita conexão...
- O Coletor manda o "nome do arquivo";
- O Servidor responde que recebeu o nome do arquivo e solicita o "Header"
- O Coletor envia o "Header do arquivo"; até aà blz!!;
- O Servidor responde que recebeu o Header do arquivo e solicita a linhas de "detalhes", o coletor fica assim mandando a linha de "detalhe" até receber que o Servidor receba o "Trailler", tipo a linha de fim de arquivo... e o Servidor responde com um "fim de arquivo" e fecha a conexão.[/txt-color]
Este é o processo que desejo implementar no sistema...
até o momento fiz de duas maneiras e ambas nao consigo fazer a segunda conexão...
Alguém poderia me ajudar ou dar-me uma dica para solucionar o meu problema?
muito obrigado mesmo..
Tenho um pouco de pressa para solucionar este problema..
Jefferson.
Vou colocar mais informações:
No momento como altero o meu STATUS de CONECTANDO para fechado?
[txt-color=#ff0000]Private Sub wsServer_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim host As String
Dim tamanho As Integer
Dim Nfile As Long
On Error GoTo erro
strdados = ""
wsServer(intMax).GetData strdados, vbString
host = wsServer(intMax).RemoteHostIP
Text1.Text = Text1.Text & "Recebendo dados do coletor " & host & vbCrLf
Sleep (2000)
'--Monta o nome do arquivo completo---
If Len(strdados) = 1 Then
nomeArquivo1 = strdados
Else
strdados = nomeArquivo1 & strdados
End If
If Len(strdados) >= 19 Or Len(strdados) <= 116 Then
Text1.Text = Text1.Text & "Status atual "
Status = wskCliente.State
Select Case wskCliente.State
Case 0:
Text1.Text = Text1.Text & "Fechado " & vbCrLf
Case 1:
Text1.Text = Text1.Text & "Aberta " & vbCrLf
Case 2:
Text1.Text = Text1.Text & "Listening " & vbCrLf
Case 3:
Text1.Text = Text1.Text & "Conexão Pendente " & vbCrLf
Case 4:
Text1.Text = Text1.Text & "Resolvendo Host " & vbCrLf
Case 5:
Text1.Text = Text1.Text & "Host Resolvido " & vbCrLf
Case 6:
Text1.Text = Text1.Text & "Conectando " & vbCrLf
Case 7:
Text1.Text = Text1.Text & "Conectado " & vbCrLf
Case 8:
Text1.Text = Text1.Text & "O par esta fechando a conexão " & vbCrLf
Case 9:
Text1.Text = Text1.Text & "Error " & vbCrLf
End Select
If Status = 7 Then wskCliente.Close
If Status = 6 Then wskCliente.Close
Text1.Text = Text1.Text & "Conexão Fechada " & vbCrLf
Text1.Text = Text1.Text & "Conectando coletor " & host & vbCrLf
Text1.Text = Text1.Text & "Porta de Conexão 100" & vbCrLf
'--- marca esta flag para poder enviar o status do login
confirma_rec = True
wskCliente.RemoteHost = host
wskCliente.RemotePort = "100"
wskCliente.Connect
End If[/txt-color]
On Error GoTo 0
erro:
If Err.Number <> 0 Then
Text1.Text = Text1.Text & "Erro..." & vbCrLf
Err.Clear
On Error Resume Next
End If
Onde quando tento exexcutar o "wskCliente.Connect" não vai trava neste ponto..
veja figura anexa do status da conexão
No momento como altero o meu STATUS de CONECTANDO para fechado?
[txt-color=#ff0000]Private Sub wsServer_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim host As String
Dim tamanho As Integer
Dim Nfile As Long
On Error GoTo erro
strdados = ""
wsServer(intMax).GetData strdados, vbString
host = wsServer(intMax).RemoteHostIP
Text1.Text = Text1.Text & "Recebendo dados do coletor " & host & vbCrLf
Sleep (2000)
'--Monta o nome do arquivo completo---
If Len(strdados) = 1 Then
nomeArquivo1 = strdados
Else
strdados = nomeArquivo1 & strdados
End If
If Len(strdados) >= 19 Or Len(strdados) <= 116 Then
Text1.Text = Text1.Text & "Status atual "
Status = wskCliente.State
Select Case wskCliente.State
Case 0:
Text1.Text = Text1.Text & "Fechado " & vbCrLf
Case 1:
Text1.Text = Text1.Text & "Aberta " & vbCrLf
Case 2:
Text1.Text = Text1.Text & "Listening " & vbCrLf
Case 3:
Text1.Text = Text1.Text & "Conexão Pendente " & vbCrLf
Case 4:
Text1.Text = Text1.Text & "Resolvendo Host " & vbCrLf
Case 5:
Text1.Text = Text1.Text & "Host Resolvido " & vbCrLf
Case 6:
Text1.Text = Text1.Text & "Conectando " & vbCrLf
Case 7:
Text1.Text = Text1.Text & "Conectado " & vbCrLf
Case 8:
Text1.Text = Text1.Text & "O par esta fechando a conexão " & vbCrLf
Case 9:
Text1.Text = Text1.Text & "Error " & vbCrLf
End Select
If Status = 7 Then wskCliente.Close
If Status = 6 Then wskCliente.Close
Text1.Text = Text1.Text & "Conexão Fechada " & vbCrLf
Text1.Text = Text1.Text & "Conectando coletor " & host & vbCrLf
Text1.Text = Text1.Text & "Porta de Conexão 100" & vbCrLf
'--- marca esta flag para poder enviar o status do login
confirma_rec = True
wskCliente.RemoteHost = host
wskCliente.RemotePort = "100"
wskCliente.Connect
End If[/txt-color]
On Error GoTo 0
erro:
If Err.Number <> 0 Then
Text1.Text = Text1.Text & "Erro..." & vbCrLf
Err.Clear
On Error Resume Next
End If
Onde quando tento exexcutar o "wskCliente.Connect" não vai trava neste ponto..
veja figura anexa do status da conexão
Tópico encerrado , respostas não são mais permitidas