Visual basic 6 Winsock - Parte II Hitskin_logo Hitskin.com

Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o temaVoltar para a ficha do tema

Aldeia RPG
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Visual basic 6 Winsock - Parte II

2 participantes

Ir para baixo

 Visual basic 6 Winsock - Parte II Empty Visual basic 6 Winsock - Parte II

Mensagem por DragonicK Seg Jan 27, 2014 7:12 pm

Como trabalhar com os dados que chegam ao servidor?
Não podemos enviar os dados para o servidor de qualquer jeito, pois não saberemos identificar de qual pessoa veio ou que dados são esses.

Devemos enviar "frases" para o servidor. Estas "frases" devem conter ínicio, meio e fim.

Se eu enviar para o servidor a seguinte frase: "Hoje eu roubei pão na casa do joão"
E seguidamente enviar a frase: "Hoje eu estou com a pepeka quente"

O servidor irá armazenar essas duas mensagens em apenas uma variavel 
"Hoje eu roubei pão na casa do joão Hoje eu estou com a pepeka quente"

Por esse motivo é importante que as "frases" devem conter ínicio, meio e fim.

"Frase 1, Hoje eu roubei pão na casa do joão, FIM"
"Frase 2, Hoje eu estou com a pepeka quente, FIM"

Frase 1" e "Frase 2" é o ínicio da mensagem, ou seja, o cabeçalho.
"Hoje eu roubei pão na casa do joão" é o meio, ou seja, os dados.
FIM, indica o fim da mensagem. "Ah vá, sério? não, pera, você descobriu sozinho?"

Então, se eu mandesse essas duas frases, uma seguida da outra. Ficaria assim:
"Frase 1, Hoje eu roubei pão na casa do joão, FIM Frase 2, Hoje eu estou com a pepeka quente, FIM"

Todos os dados que chegam ao servidor, vamos guardar dentro de uma variavel. Todas as mensagens são guardadas dentro de uma única variável.

Exemplo : 
variavel = variavel & (dados que estão chegando no servidor)

Se eu precisar enviar os dados de um cliente com nome, rg e telefone?
Precisarei criar 3 mensagens para isso?

ClienteNome, "DragonicK", FIM
ClienteRG, "241235123", FIM
ClienteTelefone, "666-666", FIM

Se enviar as "frases" separadas (como no exemplo acima) eles não vão chegar no mesmo tempo para uma função ser executada. Por isso, é importante entender o que é um pacote de dados.

Pacote é só o nome da variável que contém todos os dados que vai para o servidor.
Todos os dados do cliente, terão que estar em uma única "frase", ou seja, um pacote.  
Vamos para de usar "frase" para usar pacote, ou melhor, packet (do inglês, pacote)

packet= "Dragonic", "241235123", "666-666"

Podemos criar apenas um pacote e, adicionar algo para distinguir esses dados.
packet = CadastroCliente, "DragonicK", "SEPARAR", "241235123", "SEPARAR", "666-666", FIM

CadastroCliente = Cabeçalho (Início da pacote)
DragonicK         = nome do cliente (Meio)
SEPARAR          = SEPARADOR
241235123       = RG (Meio)
SEPARAR          = SEPARADOR
666-666           = Telefone (Meio)
FIM                  = FIM ("Ah vá, sério? não, pera, você descobriu isso sozinho de novo?")

Pronto, agora podemos identificar nossos dados no servidor.
E aqui entra a parte onde manipularemos os dados que chegam ao servidor. 
Com as funções Mid e InStr nós podemos pegar qualquer pedaço de um texto.

Vamos declarar 3 variaveis do tipo string. 
 Visual basic 6 Winsock - Parte II Vwxw

A variável buffer será responsável por armazenar todos os dados que chegam no servidor.
A variável SEP_CHAR será o nosso separador de dados.
A variável END_CHAR será o fim da mensagem.

Agora, vamos definir as 2 variavel com algum caractere.
 Visual basic 6 Winsock - Parte II Yb36

Para a SEP_CHAR indiquei '@' e para END_CHAR indiquei ';' (ponto e virgula)
Então, o pacotes de um cadastro de um cliente, poderia ser.

packet = ClienteCadastro @ DragonicK @ 241235123 @ 666-666 ; 

Então, primeiro devemos separar todos os pacotes quebrando no ; (ponto e vírgula). Depois só nos resta quebrar esse pacotes onde há @ e joga-la dentro de um array.

dados(1) = ClienteCadastro
dados(2) = DragonicK
dados(3) = 241235123
dados(4) = 666-666

Vamos modificar o evento Data_Arrival para processar cada pacote que chega ao servidor.
 Visual basic 6 Winsock - Parte II Itk1

 Visual basic 6 Winsock - Parte II C0o2
Toda informação que chega ao servidor, é processada por ordem, os dados que chegaram primeiro serão processados primeiro.

Toda informação que chega ao server é colocada dentro da variável buffer. Essa variável apenas acumula as informações que chegam ao server.

Obtém a posição do primeiro caractere ; (ponto e vírgula) que está na variável buffer. 

Um exemplo mais fácil de entender, "batata;" 
O ponto e vírgula é o número 7, ou seja, ele é o sétimo caractere da frase. A variavel Start irá conter a posição do caractere ";" na variavel buffer.


Esse loop ficará executando até que não exista mais nenhum ";" na variavel buffer. Quando a variável Start for igual a 0, acaba o loop.

Faz uma cópia do conteúdo que está na variável buffer, mas somente do primeiro caractere até um caractere antes do ";"  (Start - 1).
Pegando apenas nosso pacote, os dados 
que enviamos. 

Já que fez uma cópia dos nosso dados para a variável packet, o pacote já pode ser removida da variável buffer.

Procura novamente se há algum ";" (ponto e vírgula) na variavel buffer para repetir novamente o processo.

Mostra o pacote recebido em uma caixa de mensagem

Agora, vamos ao cliente e adicionar as variáveis e atribuir no form_load.
 Visual basic 6 Winsock - Parte II Qhn7

Antes de continuar a editar, se você seguiu essa aula. Abra o servidor e clique em Start. Connect com o cliente ao servidor e envie o seguinte texto.

Akaruz ; Cristabel ; DragonicK;

 Visual basic 6 Winsock - Parte II Uf4

Perceba que o servidor dividiu uma única mensagem em 3 partes, pois definimos que ; seria o final de casa mensagem.

 Visual basic 6 Winsock - Parte II 6y9d
Winsock Aula 2 - Parte 1


Voltando ao projeto, alterei o conteúdo do SEP_CHAR e END_CHAR no servidor e no cliente. Para não dar nenhum erro, se por acaso tivermos que cadastrar o email de alguém. 
O servidor irá quebrar o texto em 2 partes: juliosperandio@hotmail.com se tornará em juliosperandio e hotmail.com retirando o @. Por esse motivo que o conteúdo dentro de SEP_CHAR e END_CHAR deve ser algo que nunca será usado entre os dados transmitidos.

 Visual basic 6 Winsock - Parte II 56at

Adicionei 4 textbox e 1 novo Command button. 

 Visual basic 6 Winsock - Parte II Xryq

No Command3, eu alterei o método para enviar a mensagem ao servidor, os separadores da mensagem já estão junto ao código, no textobox, só é necessário escrevera a mensagem desejada.

 Visual basic 6 Winsock - Parte II 2nrh

No evento click do command4, adicionei o código para enviar o texto dos 4 textbox para o servidor.

 Visual basic 6 Winsock - Parte II 3pdh

No servidor eu adicionei uma nova sub para processar os dados que são separados pelo END_CHAR.

 Visual basic 6 Winsock - Parte II F553
No Data_Arriaval, troque o MsgBox pelo HandleData. Todos os dados que chegam no servidor não serão mais mostrados, serão processados pela sub HandleData

 Visual basic 6 Winsock - Parte II Exmg

 Visual basic 6 Winsock - Parte II Bk1s

Download Winsock Aula 2 - Parte 2


http://www.mediafire.com/download/zqewrt3att437tz/Wisnock+Aula+2+-+Parte+2.rar

Próxima aula, como fazer o servidor responder.
DragonicK
DragonicK
Experiente
Experiente

Mensagens : 543
Créditos : 81

Ficha do personagem
Nível: 1
Experiência:
 Visual basic 6 Winsock - Parte II Left_bar_bleue0/0 Visual basic 6 Winsock - Parte II Empty_bar_bleue  (0/0)
Vida:
 Visual basic 6 Winsock - Parte II Left_bar_bleue30/30 Visual basic 6 Winsock - Parte II Empty_bar_bleue  (30/30)

Ir para o topo Ir para baixo

 Visual basic 6 Winsock - Parte II Empty Re: Visual basic 6 Winsock - Parte II

Mensagem por Tobi S2 Seg Fev 17, 2014 2:24 am

Levo muito tempo para terminar as aulas porq ter q escrever tudo, seria mais rapido os códigos não estivessem com imagens, por um lado é até bom que treino vb6 Successful

Ótima aula!
Tobi S2
Tobi S2
Novato
Novato

Mensagens : 14
Créditos : 2

Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos