Estou desenvolvendo um cliente de FTP em VB.net e isso tá me tirando o sono.
As conexões estão um show, a listagem está trazendo os icones do sistema, estou muito empolgado com o projeto, mas tem uma coisa que me incomoda muito:
Em alguns momentos não estou conseguindo ler toda a resposta do servidor ou ele só está me mandando uma parte.
No servidor local não há esse problema, talvez porque a conexão seja muito rápida, mas com servidores online isso é bastante frequente.
Em um loop eu lia 512bytes de dados em cada ciclo e dava até a mensagem "Foi forçado o cancelamento de uma conexão existente pelo host remoto". Aí aumentei o tamanho do buffer de leitura até parar o erro. Fui dobrando o buffer e o erro parou quando tornei a ler 4Kb(4096bytes) em cada ciclo.
Debugando descobri que nem chega a tanto o tamanho da resposta, ou seja, lendo toda a resposta de uma vez o problema não ocorre, o problema é que de vez em quando o servidor só me manda metade da resposta!
Por exemplo:
A resposta que eu gostaria de obter seria a seguinte:
08-25-11 01:17PM 561 arquivo.txt
08-26-11 02:28AM <DIR> pasta
Mas tem hora que o servidor me responde:
08-25-11 01:17PM 561 arquivo.txt
08-26-11 02:2
Como eu disse, o caso acima é só um exemplo, prq o problema só ocorre com listagens mais longas.
To usando Socket's para as conexões.
Alguém já teve algum problema semelhante? O que pode ser? Por que não ocorre sempre? Tem como eu pedir pro servidor ter mais paciência e me mandar tudo?
Question
Principe
Estou desenvolvendo um cliente de FTP em VB.net e isso tá me tirando o sono.
As conexões estão um show, a listagem está trazendo os icones do sistema, estou muito empolgado com o projeto, mas tem uma coisa que me incomoda muito:
Em alguns momentos não estou conseguindo ler toda a resposta do servidor ou ele só está me mandando uma parte.
No servidor local não há esse problema, talvez porque a conexão seja muito rápida, mas com servidores online isso é bastante frequente.
Em um loop eu lia 512bytes de dados em cada ciclo e dava até a mensagem "Foi forçado o cancelamento de uma conexão existente pelo host remoto". Aí aumentei o tamanho do buffer de leitura até parar o erro. Fui dobrando o buffer e o erro parou quando tornei a ler 4Kb(4096bytes) em cada ciclo.
Debugando descobri que nem chega a tanto o tamanho da resposta, ou seja, lendo toda a resposta de uma vez o problema não ocorre, o problema é que de vez em quando o servidor só me manda metade da resposta!
Por exemplo:
A resposta que eu gostaria de obter seria a seguinte:
08-25-11 01:17PM 561 arquivo.txt
08-26-11 02:28AM <DIR> pasta
Mas tem hora que o servidor me responde:
08-25-11 01:17PM 561 arquivo.txt
08-26-11 02:2
Como eu disse, o caso acima é só um exemplo, prq o problema só ocorre com listagens mais longas.
To usando Socket's para as conexões.
Alguém já teve algum problema semelhante? O que pode ser? Por que não ocorre sempre? Tem como eu pedir pro servidor ter mais paciência e me mandar tudo?
Link to comment
Share on other sites
1 answer to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.