[VB 6.0] Enviar ficheiros por winsock

WinAce_Boy

Power Member
Boas a todos,

Hà uns tempos eu fiz um chat em vb 6.0 com um servidor e um cliente e funciona muito bem(ate da para alterar a alcunha! iupi ^.^ lol).

Devido à lentidão do msn para enviar ficheiros gostaria de saber quais os passos para fazer um programa semelhante ao chat mas em vez de enviar texto, envia ficheiros..Não sei se é possivel ou se é até mais rapido que o msn mas o que interessa é saber como fazer este programa por isso qualquer dica é bem-vinda xD.

Abraços e obrigado pela atenção ;)
 
Boas a todos,

Hà uns tempos eu fiz um chat em vb 6.0 com um servidor e um cliente e funciona muito bem(ate da para alterar a alcunha! iupi ^.^ lol).

Devido à lentidão do msn para enviar ficheiros gostaria de saber quais os passos para fazer um programa semelhante ao chat mas em vez de enviar texto, envia ficheiros..Não sei se é possivel ou se é até mais rapido que o msn mas o que interessa é saber como fazer este programa por isso qualquer dica é bem-vinda xD.

Abraços e obrigado pela atenção ;)
O quê? Mas agora eu tenho competição, é? :D

Eu estou a fazer precisamente a mesma coisa, precisamente pelo mesmo motivo que tu :P o problema é que ainda não sei qual será a forma certa de abordar isto.

Pensei em duas formas:
1) Um único socket. Pensas já no protocolo (algo tipo "conectado", "vou enviar-te um ficheiro", "ele chama-se BLABLABLA.txt") e logo a seguir lanças um comando "COMECEI!" e a partir é enviado o ficheiro (sabes usar o Open ... For Binary, não sabes?); depois, não sei se posso mandar comandos de "PAUSE" ou "TERMINEI".

2) Dois sockets. Um protocolo análogo ao FTP, onde um socket é usado para comunicação e o segundo socket só é aberto quando é necessário; e quando o for, o único tráfego que passa por ele é o ficheiro. Raw data.

O meu problema é que cada alternativa tem as suas vantagens e desvantagens, e não sei quais são as probabilidades de por acaso o ficheiro a enviar ter exactamente o comando do PAUSE ou do TERMINAR. Também pensei em deixar os programas, pelo protocolo, "decidirem" quais serão os comandos. Ou seja, algo como "Para pausar a transferência, o comando é o JKDSBKSDGKSDH=&)5784BKDSB; para parar, é o KJGKJTR675/%346$/4363(46%43(", de forma a que dificilmente essa string se encontre no interior do ficheiro.

Ainda preciso de pensar bem nisto. No entanto, a forma que me parece mais aceitável é um socket, que a partir do momento em que começa a enviar o ficheiro, não pára (a menos que o mandes abaixo). Ah! E, consequentemente, não te esqueças duma coisa: se vais fazer isso, faz outra coisa útil: a possibilidade de interromper a transferência para mais tarde a poderes restabelecer ;) no MSN, quando uma transferência falha, tens de a recomeçar, e isso foi algo que sempre me chateou muito. Aproveita, e junta ao útil, algo ainda mais útil :P


Isto foi mais uma divagação do que uma ajuda, mas espero ter-te deixado a pensar ;)
Boa sorte com isso
 
O quê? Mas agora eu tenho competição, é? :D

Eu estou a fazer precisamente a mesma coisa, precisamente pelo mesmo motivo que tu :P o problema é que ainda não sei qual será a forma certa de abordar isto.
Também criei um programa desses e com essa finalidade, mas foi em .NET :P

Usei apenas 1 socket que começa por enviar o nome e o tamanho do ficheiro (em bytes) e, a partir daí, todos os bytes que o outro recebe são adicionados ao ficheiro, até este atingir aquele tamanho em bytes.
 
Também criei um programa desses e com essa finalidade, mas foi em .NET :P

Usei apenas 1 socket que começa por enviar o nome e o tamanho do ficheiro (em bytes) e, a partir daí, todos os bytes que o outro recebe são adicionados ao ficheiro, até este atingir aquele tamanho em bytes.
.NET... quando tiver um computador que me permita mexer nisso, talvez um dia "migre" :P

Pois, fizeste conforme estou a pensar fazer :) um "mini-protocolo" que comunica o offset, o nome e possivelmente a data de modificação ou criação (ainda estou indeciso :P), e a partir do "vou começar", é tudo o ficheiro. Estou é a ver que não posso fazer uma "pausa", mas de qualquer forma, verificar o buffer de chegada contra uma string ainda tornaria a transferência mais lenta.
 
Mas o codigo e com o send data?
PS.nao, nao sei abrir para binario..
Tambem gostava, se alguem tiver, me enviar um programa semelhante para servir de exemplo..
Obrigado pela atencao
Abracos
 
Última edição:
Back
Topo