Dúvida no VB6

WinAce_Boy

Power Member
Oi pessoal!
Gostaria de saber como faço com que o meu programa aceda à internet..
Por exemplo vamos imaginar que eu queria fazer mais ou menos um "chat" com uma text box(textbox1) em k se punha o texto e outra text box(textbox2) para onde iria o texto introduzido na text1, ao clikar em ok (command button1) o texto da textbox2 seria igual ao texto da txt1.
Esta última parte eu sei fazer mas não consigo fazer com que o meu programa se conecte à internet e com que seja utilizado por mais utilizadores- como se faz num chat normal...

Grato pela vossa atenção...
Abraços
 
Vais ter imensos obstáculos pelo caminho.
O meu conselho para já (porque não tenho tempo para dar explicações pormenorizadas):
procura no google por WINSOCK.

Cumps [[[[[[[[]]]]]]]]
angelofwisdom

e quando puder volto cá para te dar uma resposta mais concisa ;)
 
Lol, ok, já pesquisei no google e ja tenho pelo menos um conhecimento muito básico desse componente do vb, também estou cada vez mais a apoiar a tua afirmação "vais encontrar muitos obstáculos pelo caminho.." :(.
Aguardo a tua resposta..- não sabes assim por alto quando vais estar menos ausente..?
Ok, obrigadão por toda a tua ajuda e atenção que me tens fornecido..
Xauzão, man
 
Lol, ok, já pesquisei no google e ja tenho pelo menos um conhecimento muito básico desse componente do vb, também estou cada vez mais a apoiar a tua afirmação "vais encontrar muitos obstáculos pelo caminho.." :(.
Aguardo a tua resposta..- não sabes assim por alto quando vais estar menos ausente..?
Epá... em princípio quando terminarem as aulas, porque estou sobrecarregado de trabalho, com uma ficha de leitura, dois relatórios e quatro testes em menos de duas semanas.....:(
Ok, obrigadão por toda a tua ajuda e atenção que me tens fornecido..
Xauzão, man
Anytime :) é bom ver que às vezes parece que ajudo mesmo :-D

Uma coisa rápida: o maior obstáculo que poderás enfrentar é em saber se um pacote enviado pelo winsock foi entregue ou não. É que estamos a falar da Internet - os pacotes saem do teu computador mas nem sempre chegam ao destinatário. O meu problema tem vindo a ser enviar um página web (quando eu estava a programa um servidor http por diversão) e a página chegar incompleta :(

Vou ver se ainda te consigo dizer alguma coisa decente pelo caminho... não precisas disso antes do fim das aulas, pois não? :x

Cumps [[[[[[[[]]]]]]]]
angelofwisdom
 
Uma coisa rápida: o maior obstáculo que poderás enfrentar é em saber se um pacote enviado pelo winsock foi entregue ou não. É que estamos a falar da Internet - os pacotes saem do teu computador mas nem sempre chegam ao destinatário. O meu problema tem vindo a ser enviar um página web (quando eu estava a programa um servidor http por diversão) e a página chegar incompleta :(

Bem..., isso já depende do protocolo que usas e da forma como usas esse mesmo protocolo ;)

Com TCP sabes sempre se os dados chegam ao outro lado, quando existe algo que quebre a conexão tanto o receptor como o emissor são notificados dessa falha, logo sabes que algo correu mal.

Com UDP não tens essa fiabilidade por definição, mas podes criar algoritmos para garantires essa mesma fiabilidade, recorrendo ao uso de acknowledgments :)

Posso explicar isto em mais detalhe (até porque estou neste momento a fazer um trabalho em que uso estes 2 protocolos :P), no entanto não sei aplicar isto em visual basic, mas nada que o google não ajude :P

abraços, HecKel
 
Última edição:
Sim, HecKel, eu sei ;) e em Visual Basic tens os eventos SendProgress e SendComplete para saberes o "estado" do envio, e o "Error" para capturares os erros. O problema está em fazer um programa 100% funcional e sem bugs, que é o meu objectivo, e eu tenho vindo a ter problemas no envio dos pacotes. Nada que algumas horas de debugging não resolvam... o problema está agora em arranjar essas horas :-D

No meu caso, era para enviar ficheiros (já que enviar ficheiros pelo MSN é como tentares ditar a bíblia em código morse). O ficheiro que chegava era menor que o que era enviado. Aprendi ha pouco tempo a usar os SendProgress/Complete... e é por isso que ainda tenho uns problemas.
UDP para enviar ficheiros ... well .... no way :-D acho que prefiro usar o TCP.

Cumps [[[[[[[[]]]]]]]]
angelofwisdom

p.s.: de acordo com o DSantosP, não é uma ficha de leitura... é uma apresentação oral =| (/me dies)
 
Obrigado pela ajuda, HecKel :) mas o que me vai ajudar acima de tudo é quando eu começar a pensar ;) por vezes temos de aprender com os próprios erros, e a minha forma de programar (apesar de alguns dizerem que me faz desperdiçar demasiado tempo) é encontrando por mim mesmo os erros. Prefiro não ver a solução noutro lado. Assim sempre aprendo qualquer coisa que não me esqueço com o tempo.

No entanto, hei-de verificar esse link com calma ;)

Cumps [[[[[[[]]]]]]]]
angelofwisdom
 
E só de saber que isto tudo começou comigo..
A única coisa que eu queria saber era como fazer aceder um programa feito no VB6, à internet de maneira a que eu e/ou outros utilizadores utilizem esse programa que neste caso é um chat - Se me pudessem explicar mais pormenorizadamente e por passos ficaria muito grato, principalmente a parte dos hosts e das portas.
Obrigado pela atenção.
;)
 
Um esquema rápido (as aulas acabam esta sexta :D):
Dois computadores. O teu e o do teu amigo.

Um deles tem de escutar (é o servidor; recebe ligações). O outro tem de se ligar ao servidor (é o cliente; faz as ligações).
Olha para o MSN. O servidor - aquele que escuta - está algures (nos EUA, penso eu). O que está na net é o MSN Messenger. O cliente. O que se liga ao servidor.

O servidor tem de fazer Listen (escutar) numa determinada porta. O cliente TEM de saber a porta a que se vai conectar/ligar/CONNECT.

O protocolo HTTP trabalha da seguinte forma: o servidor (uma aplicação como o Apache server ou o MS ASP, em microsoft.com, techzonept.com, etc...) escuta na porta 80. Depois, o cliente (o browser - Microsoft Internet Explorer, Mozilla Firefox, Opera, etc... no teu computador) conecta-se ao servidor.
Estando estabelecida a ligação, o cliente envia headers. Algo como

----
GET http://www.techzonept.com/showthread.php?p=1312300#post1312300 HTTP/1.0

---- (sim, com uma linha em branco)
e no servidor, o programa que está à escuta (Apache, ASP....) responde com a página pedida.

Tinha de ser uma coisa assim tão simples para ver se consegues perceber à primeira :x isto não é de forma nenhuma "profissional".

Cumps [[[[[[[[]]]]]]]]
angelofwisdom
 
Obrigado, agora já estou a perceber melhor..
Mas tipo, como é que eu sei a porta que devo ter?(eu como servidor)
 
Última edição:
Obrigado, agora já estou a perceber melhor..
Mas tipo, como é que eu sei a porta que devo ter?(eu como servidor)
Desculpa não te ter respondido mais cedo :( não tinha notado.
Tu inventas uma porta à vontade. Tens é de ter cuidado com o número que escolhes.
Pode estar entre 1 e 65535, mas por exemplo, a porta 25 está standardizada para o protocolo de SMTP (envio de e-mails, Simple Mail Transfer Protocol), e à escuta nessa porta está um servidor de mail exchange. Já a porta 80 é a porta do protocolo HTTP (HyperText Transfer Protocol), e do outro lado está à escuta um servidor http. Experimenta aceder ao http://www.techzonept.com:80 . Hás-de notar que o escolheres a porta 80 não faz diferença, já que os browsers estão configurados para, mal escrevas um site, acrescentam o nome do protocolo atrás (http://) e a porta é, portanto, a 80.
Já ftp (File Transfer Protocol) usa a porta 21....

Em suma, escolhes a porta à vontade, mas tem de ser uma porta "desconhecida". Normalmente, aconselha-se a usar portas acima da 1024. Mas... o IRC (Internet Relay Chat) usa a porta 6667, e um dos primeiros backdoors que existiram (o BackOrifice), usava a porta 31337 (eleet - leet - elite, escrito em leetspeak).
Eu, pessoalmente, em programas que costumo fazer que envolvem o protocolo http mas em que não quero que escutem na porta 80, geralmente uso a porta 51735 ou a 5173, que é o leetspeak para "SITE" ou "SITES" (S-5, I-1, T-7, E-3).

Isto das portas confundiu-me mesmo imenso há prai um ou dois anos atrás, porque eu não sabia practicamente nada da Internet. Só quando tive internet (em Junho de 2005) é que comecei a perceber qualquer coisa disto.

Se alguém recomendar alguma alteração, que o diga :)

Espero que isto tenha ajudado :)

Cumprimentos [[[[[[[]]]]]]]
angelofwisdom
 
Oi angelofwisdom, encontrei algo que desliga/reinicia/etc.. o pc sem APIs enormes e complicadas que só te vão estourar a cabeça.. Check this out dude:

http://www.devx.com/tips/Tip/22532

Ainda não esplorei bem mas se calhar poderá ajudar..
Eu vou dando notícias ok?
Abraços man..
Em relação a isso (que só agora é que li :x ), foi mais ou menos o que te dise na outra thread. Shell "shutdown". A diferença é que eles acrescentaram argumentos que podem ser mais ou menos úteis (vê no site o que eles querem dizer).

"shutdown -s" faz shutdown
"shutdown -s -t 10" faz um shutdown com um timeout
"shutdown -r" faz restart ....

É só pegares nos arg's correctos :) ora experimenta aí.
Se te aparecer algo a dizer que o computador irá desligar em n segundos, correu bem. Na linha de comandos faz "shutdown -a" para anular o shutdown ;)

Cumps [[[[[[]]]]]]
angelofwisdom
 
Ja testei e o código dá mas não na minha sessão(não sou administrador, sou conta limitada.. lol, uma das desvantagens do pc não ser meu...), mas pronto, também o programa não era para mim(era para a administradora do pc cá em casa(a minha irmã)) e dá na dela..

Voltando ao assunto do winsock, mas se eu conseguir fazer essas instruções que me indicaram com portas e etc.. o programa dá para ser utilizado por dois pcs ao mesmo tempo tipo chat?? Não tenho necessidade em fazer este programa mas é mesmo só por curiosidade.
Xauzão.. Abraços para todos!!
 
Para um programa de chat, o que precisas, muito basicamente, é de dois programas - o servidor e o cliente - ou apenas um programa que faça os dois. Num computador activas o servidor (que escuta numa determinada porta), e no outro, o cliente (que se conecta ao servidor, na porta escolhida). Depois é já transferência de dados controlada pelo programa, e com um protocolo que podes fazer tu mesmo.

Cumps [[[[[[]]]]]]
angelofwisdom
 
Back
Topo