    Curso de scripvox - aula19 (Por Fabiano Ferreira)

    Meus amigos,
Estamos chegando ao final do nosso curso de scripvox.
    E para fechar com chave de ouro, vamos ver as operaes possveis
com a internet por meio do scripvox.
    Embora sejam poucos comandos e haja muitas limitaes, o nmero de
possibilidades continuam sendo bem grandes.
    Basta dominar o scripvox, ter imaginao e, o mais importante,
estudar.
No s scripvox, mas estudar coisas relacionadas a rede, como por
exemplo, os protocolos de comunicao e avaliar se  possvel
implement-lo em um script feito no scripvox.
    Ento vamos em frente!

    *Internet inicia;
    Esse comando deve vir antes de qualquer operao na rede em um
script.
    *Internet termina;
    Este comando deve vir ao fim das operaes com a rede em um script;

*Conecta
    Este comando serve para conectar em um servidor qualquer.
    Forma de uso:
Conecta, um espao, sinal de jogo da velha, um nmero de 0 a 9, um
espao, o endereo do servidor entre aspas ou nome da varivel contendo
um endereo de servidor, um espao e o nmero da porta utilizada por
esse servidor.
    Exemplo:
Internet inicia
Conecta #1 "www.google.com.br" 80
internet termina

    O cdigo acima faz uma conexo com o servidor www.google.com.br,
utilizando a porta 80 para a comunicao.

    * Escreve;
Em operaes com internet, o comando escreve  utilizado para enviar
pedidos de recursos a um servidor.
    A maneira de formular esse 'pedido' vai depender de que tipo de
servidor estamos conectados, por exemplo, um servidor http entende
certos tipos de comandos, enquanto um servidor pop3 entende outros.
    Aprofundar nesta parte fugiria ao objetivo do curso.
Pretendo apenas mostrar como utilizar o scripvox para desenvolver
scripts para a internet.
Mas se voc tem interesse no assunto, pode entrar em contato para
trocarmos idias, utilizar o email da lista ou mesmo o meu endereo de
email pessoal.

    *L ou le;
    Este comando serve para verificar a resposta dada por um servidor
quando feito anteriormente uma solicitao de algum recurso utilizando o
comando escreve.
    Forma de uso:
L, um espao, sinal de jogo da velha, um nmero de 0 a 9, um espao e uma
varivel que vai receber a resposta do servidor.

    Vejamos agora um exemplo de requisio de um recurso a um servidor.
    O programa a seguir conecta a um servidor http e pede um arquivo do
tipo html, escrevendo a resposta do servidor na tela:

Escreve "Qual o nome do servidor:"
L s

    Internet inicia
conecta #1 s 80
Escreve "Conexo realizada."
Escreve "qual o arquivo html que deseja receber?"
L u
Escreve #1 "GET "u" HTTP/1.0"
Escreve #1 ""

    L #1 r
Escreve r
internet termina

Algumas consideraes:

*Ao executar o cdigo:
    ->ao executar esse cdigo, esperimentem colocar o endereo
www.sanfersite.com.br. Quando perguntado  o arquivo html a receber,
digitem http://www.sanfersite.com.br/index.html

    *Sobre o fonte:
    ->A parte que solicita o arquivo html ao servidor :
Escreve #1 "GET "u" HTTP/1.0"
Escreve ""
    O mtodo get no http  o utilizado toda vez que queremos pedir um
recurso ao servidor.
A forma mais simples, porm no a mais eficiente seria a descrita no
cdigo acima:
Get http://endereo.com.br/arquivo http/versao
Obrigatoriamente deve-se enviar uma linha em branco ao final dessa
requisio.
    Volto a insistir: essa no , nem delonge, a melhor maneira para
enviar um pedido a um servidor.
    um navegqador, como por exemplo o webvox, formula um pedido de
recurso muito mais completo e eficiente.
    Para mais detalhes, consulte artigos que falam sobre o protocolo
http, ou, se voc domina o ingls, procure pela documentao
que trata do protocolo http chamada rfc 2616.
Nela voc encontra absolutamente tudo sobre o http.

*fecha;
    Este comando fecha uma conexo estabelecida com o comando conecta.

    Vamos repetir o exemplo anterior, acrescentando o comando fecha ao
final da operao de leitura da resposta do servidor.

Escreve "Qual o nome do servidor:"
L s

    Internet inicia
conecta #1 s 80
Escreve "Conexo realizada."
Escreve "qual o arquivo html que deseja receber?"
L u
Escreve #1 "GET "u" HTTP/1.0"
Escreve #1 ""

    L #1 r
Fecha #1
Escreve r
internet termina

    *checa;
    Este comando verifica se ainda h algo para ser lido no servidor.
Forma de uso:
checa, um espao e uma varivel.
    A varivel recebe 0, caso ainda tenha algo a ser lido ou 1 caso no
tenha.
    Vejamos o uso desse comando na prtica, sendo acrescentado no nosso
exemplo:
Escreve "Qual o nome do servidor:"
L s

    Internet inicia
conecta #1 s 80
Escreve "Conexo realizada."
Escreve "qual o arquivo html que deseja receber?"
L u
Escreve #1 "GET "u" HTTP/1.0"
Escreve #1 ""

    L #1 r
checa s
enquanto s=0
Escreve r
L #1 r
Fim enquanto
Fecha #1
internet termina

    *Observa;
    Este comando permite que um programa no fique preso a uma recepo
de dados (comando l).
    Forma de uso:
observa #n v, onde n  o nmero que foi associado a conexo com um
servidor e v  uma varivel.
Esta varivel pode receber dois valores: 0, no h nada a ser lido, ou 1,
h algo a ser lido.
    Abaixo, um pequeno trecho retirado do manual oficial que explica o
uso do comando observa em operao com internet:

"Quando o programa quiser saber se
chegou alguma mensagem, pode observar e verificar. quando ocorre uma
desconexo remota, existe a indicao
   que a porta requer leitura. Assim use o comando
   checa para verificar se houve um fechamento do arquivo."

    Vejamos um exemplo da utilizao do comando observa, retirado do
manual oficial do scripvox:
internet INICIA
conecta #1 "caec.nce.ufrj.br" 110

repete v 10
    observa #1 s
    se s <> 0 desvia @chegoualgo
    escreve "esperando mais um segundo"
    espera 1
fim repete

escreve "parceiro ficou mudo, vou-me desconectar"
desvia @fim

@chegoualgo
    l #1 x
    escreve "Parceiro falou o seguinte"
    escreve x

@fim
   fecha #1
   internet TERMINA

    O programa acima conecta-se a um servidor pop3.
    Este  o protocolo usado pelos clientes de email para receber as
mensagens.
O cartavox, por exemplo, utiliza pop3 para pegar as mensagens no
servidor.
Mas, voltando a falar do nosso exemplo,
    Ele aguarda por um certo tempo uma resposta do servidor.
Se no obtiver uma resposta dentro deste tempo, o programa enserra a
execusso.

    *serve;
        Este comando serve para criar uma conexo tcp/ip.
Forma de uso:
Serve #n porta ou varivel, onde #n  um nmero de 0 a 9e porta ou
varivel  o nmero da porta utilizada.
    Se algum acessar esta porta, ser possvel estabelecer uma
conversao.
    Vejamos este exemplo, retirado do manual oficial do scripvox:

internet INICIA
serve #1 2000
escreve #1 "Oi,  um prazer falar com voc"
l #1 x
escreve "Parceiro falou o seguinte"
escreve x
fecha #1
internet TERMINA

    O programa acima aguarda que um cliente se conecte e envie uma
mensagem.
    A mensagem enviada  mostrada e o programa termina.

*ip;
    Este comando serve para descobrir o ip local ou ip remoto.
    Para isso, devemos abrir antes uma conexo (comando conecta ou
serve).
Forma de uso:
ip local ou remoto #n v, onde
n  o nmero que foi associado a conexo com o servidor, e v  a
varivel que vai receber a resposta.

    Acompanhe o exemplo:

Internet inicia

Conecta #1 "www.google.com.br" 80
ip local #1 l
ip remoto #1 r
escreve l
escreve r
fecha #1
internet termina
Termina mudo

    E assim, meus amigos, enserramos nosso curso de scripvox!
    Gostaria de agradecer a todos que participaram e apoiaram este
trabalho.
    Termino este curso, com uma sensao de dever cumprido e esperando
que muitos multiplicadores desse conhecimento surjam daqui em diante.
    Muitssimo obrigado a todos, e at uma prxima oportunidade!!!

Exerccios:

1 - Faa um programa com as seguintes caractersticas:
*acesse um servidor pop3, que ser especificado pelo usurio;
*verifica se h mensagem;
*Se houver, diz quantas existem;
*se no houver, escrever uma mensagem do tipo "No h mensagens no
servidor;

    Dicas importantes:
*    Um servidor pop3, geralmente, utiliza a porta 110;
    *o comando que verifica as mensagens  o comando stat;
    *A resposta  dada mostrando a quantidade de mensagens e o espao
que elas ocupam na caixa;
    *o acesso ao pop3 requer que o usurio entre com um login e uma
senha.
    Capture o usurio e a senha utilizando o comando L e repasse ao
servidor da seguinte maneira:
user u, onde u,  a varivel que armazena o login, por exemplo:
se em u tenho fabiano@fabiano.com.br, o servidor deve receber:
user fabiano@fabiano.com.br
    A senha deve ser passada assim:
pass s, onde s  a varivel que guarda a senha do usurio.
Se em s, por exemplo, contiver 1234, o servidor deve receber:
pass 1234;
    *Caso voc saiba utilizar o telnet, use-o para realizar testes.
Isso vai ajudar a voc implementar seu cdigo.

    *Entregar a resposta at o dia 05/02 no seguinte endereo:
qst-scripvox@sanfersite.com.br

    Boa sorte!
