    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 operações possíveis
com a internet por meio do scripvox.
    Embora sejam poucos comandos e haja muitas limitações, o número de
possibilidades continuam sendo bem grandes.
    Basta dominar o scripvox, ter imaginação e, o mais importante,
estudar.
Não só scripvox, mas estudar coisas relacionadas a rede, como por
exemplo, os protocolos de comunicação e avaliar se é possível
implementá-lo em um script feito no scripvox.
    Então vamos em frente!

    *Internet inicia;
    Esse comando deve vir antes de qualquer operação na rede em um
script.
    *Internet termina;
    Este comando deve vir ao fim das operações com a rede em um script;

*Conecta
    Este comando serve para conectar em um servidor qualquer.
    Forma de uso:
Conecta, um espaço, sinal de jogo da velha, um número de 0 a 9, um
espaço, o endereço do servidor entre aspas ou nome da variável contendo
um endereço de servidor, um espaço e o número da porta utilizada por
esse servidor.
    Exemplo:
Internet inicia
Conecta #1 "www.google.com.br" 80
internet termina

    O código acima faz uma conexão com o servidor www.google.com.br,
utilizando a porta 80 para a comunicação.

    * Escreve;
Em operações 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 idéias, utilizar o email da lista ou mesmo o meu endereço de
email pessoal.

    *Lê ou le;
    Este comando serve para verificar a resposta dada por um servidor
quando feito anteriormente uma solicitação de algum recurso utilizando o
comando escreve.
    Forma de uso:
Lê, um espaço, sinal de jogo da velha, um número de 0 a 9, um espaço e uma
variável que vai receber a resposta do servidor.

    Vejamos agora um exemplo de requisição 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 "Conexão 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 considerações:

*Ao executar o código:
    ->ao executar esse código, esperimentem colocar o endereço
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 método get no http é o utilizado toda vez que queremos pedir um
recurso ao servidor.
A forma mais simples, porém não a mais eficiente seria a descrita no
código acima:
Get http://endereço.com.br/arquivo http/versao
Obrigatoriamente deve-se enviar uma linha em branco ao final dessa
requisição.
    Volto a insistir: essa não é, 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 inglês, procure pela documentação
que trata do protocolo http chamada rfc 2616.
Nela você encontra absolutamente tudo sobre o http.

*fecha;
    Este comando fecha uma conexão estabelecida com o comando conecta.

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

Escreve "Qual o nome do servidor:"
Lê s

    Internet inicia
conecta #1 s 80
Escreve "Conexão 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 espaço e uma variável.
    A variável recebe 0, caso ainda tenha algo a ser lido ou 1 caso não
tenha.
    Vejamos o uso desse comando na prática, sendo acrescentado no nosso
exemplo:
Escreve "Qual o nome do servidor:"
Lê s

    Internet inicia
conecta #1 s 80
Escreve "Conexão 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 não fique preso a uma recepção
de dados (comando lê).
    Forma de uso:
observa #n v, onde n é o número que foi associado a conexão com um
servidor e v é uma variável.
Esta variável pode receber dois valores: 0, não 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 operação com internet:

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

    Vejamos um exemplo da utilização 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 não obtiver uma resposta dentro deste tempo, o programa enserra a
execussão.

    *serve;
        Este comando serve para criar uma conexão tcp/ip.
Forma de uso:
Serve #n porta ou variável, onde #n é um número de 0 a 9e porta ou
variável é o número da porta utilizada.
    Se alguém acessar esta porta, será possível estabelecer uma
conversação.
    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 conexão (comando conecta ou
serve).
Forma de uso:
ip local ou remoto #n v, onde
n é o número que foi associado a conexão com o servidor, e v é a
variável 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 sensação de dever cumprido e esperando
que muitos multiplicadores desse conhecimento surjam daqui em diante.
    Muitíssimo obrigado a todos, e até uma próxima oportunidade!!!

Exercícios:

1 - Faça um programa com as seguintes características:
*acesse um servidor pop3, que será especificado pelo usuário;
*verifica se há mensagem;
*Se houver, diz quantas existem;
*se não houver, escrever uma mensagem do tipo "Não 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 espaço
que elas ocupam na caixa;
    *o acesso ao pop3 requer que o usuário entre com um login e uma
senha.
    Capture o usuário e a senha utilizando o comando Lê e repasse ao
servidor da seguinte maneira:
user u, onde u, é a variável 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 variável que guarda a senha do usuário.
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 código.

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

    Boa sorte!
