1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[VB 6.0] Enviar ficheiros por winsock

Discussão em 'Programação' iniciada por WinAce_Boy, 6 de Fevereiro de 2008. (Respostas: 8; Visualizações: 1544)

  1. WinAce_Boy

    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 ;)
     
  2. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    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
     
  3. balute

    balute Power Member

    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.
     
  4. Kayvlim

    Kayvlim Undefined Moderator
    Staff Member

    .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.
     
  5. nasic

    nasic Power Member

    Eu fiz algo semelhante em C. Utilizamos sockets com protocolos UDP e dps TCP.
    É um trabalho engraçado.

    Boa sorte
     
  6. WinAce_Boy

    WinAce_Boy Power Member

    Obrigado pelas dicas
    Vou dando notícias, vou "estudar" este prog..
    Abraços
     
  7. WinAce_Boy

    WinAce_Boy Power Member

    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: 7 de Fevereiro de 2008
  8. WinAce_Boy

    WinAce_Boy Power Member

Partilhar esta Página