domingo, 11 de setembro de 2011

Erro em Socket no VB.Net

Estou desenvolvendo um cliente de FTP em VB.Net e quando a lista de arquivos era muito grande e o tipo de sistema era UNIX, ou seja, quando havia um grande volume de informação para ler(receber do servidor) eu era presenteado com a mensagem "Foi forçado o cancelamento de uma conexão existente pelo host remoto".

O problema é: O servidor te dá um tempo pra ler as informações na porta de dados que ele abriu e se você demorar muito pra ler essas informações ele te desconecta e você só le parte dos dados.

Solução: Ler mais rapidamente as informações =)

Foi a única opção que me serviu. Tentei ler 512 bytes de dados em cada loop, depois passei pra 1024, depois 2048 e quando tentei ler 4096 o problema foi resolvido. Creio que em uma lista de pastas maior do que a que usei para testar terei o erro novamente. Vou aumentar mais um pouco o número de bytes que o programa lê em cada ciclo. Não sei que problemas isso pode trazer, creio que apenas um pico de uso de memória do computador do usuário durante esses processos.
No momento estou testando no servidor local, talvez online o problema possa se agravar com conexões mais lentas.

Nenhum comentário: