ProPixel

Participe do fórum, é rápido e fácil

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

Ir para baixo
16bitz
16bitz
Membro

<b>Posts</b> Posts : 51
<b>Créditos</b> Créditos : 0
<b>Respeito</b> Respeito : 1
Programador de jogos.
Olá Convidado !
Neste tópico irei ensinar como criar um chat por socket, é algo fácil de fazer e as vezes bem útil.

1. mswinsck.OCX
Primeiro faça o download deste arquivo .OCX :
Clique aqui.

2. Form no VB
Agora abra seu VB e crie um novo projeto com um Windows Form Application, agora depois de criar o Form, clique com o botão direito em "ALL WINDOWS FORMS" e clique em "Choose Items", agora no menu de cima você clica em "COM Components" Clique em Browser e procure o arquivo mswinsck.OCX e clique nele e aperter em "ABRIR", pronto, o OCX foi selecionado, parte resolvida, dê um OK e pronto, o .OCX estará na lista como se fosse um componente do VB, vamos ao próximo passo.

3. Começando o projeto
Adicione o Microsoft WinSock Components no Formulário, ele estará lá no final da lista.
Escolha o tamanho do seu chat, recomendo um tamanho médio, na parte superior, faça uma TEXTBOX grande que irá mostrar as falas, e coloque as propiedades dela assim : ReadOnly = True, MultiLine = True e deixe o fundo dele branco.

4. Botões e Enviar texto.
Certo, agora adicione uma TEXTBOX abaixo da anterior, esta irá servir para enviar o texto que o usuário quiser, crie dois BUTTONS também, um para o usuário se conectar ao servidor o outro para o usuário Enviar a mensagem, nas propriedades dos botões coloque assim :
Botão de enviar : Name = btnEnviar.
TEXTBOX que é onde irão digitar o texto : Name = txtMensagem.
Botão de se conectar : Name = btnConectar.
Componente Winsock : Name = Sock.

5. Adicionando funções aos botões.
Dê dois cliques no botão Conectar e espere a aba de códigos se abrir, no meio do Private Sub e do End Sub digite isso :
Código:
 Sock.RemotePort = SUAPORTA
Sock.RemoteHost = Sock.localIP '127.0.0.1
Sock.Connect
No Sock.LocalIP você pode mudar para RemoteHost e colocar no lugat de 127.0.0.1 para o IP do host, hamachi ou outro...
Agora você clica no canto onde está escrito Form1 (Fica abaixo do Form1.vb) ao clicar lá selecione o Sock e em Declarations selecione DataArrival e no Sub que irá se criar coloque o seguinte comando :
Código:
Dim A as Object = Nothing
Dim NovaString As String = ""
Dim Caractere As Byte
Sock.GetData(A)
For Each Caractere In A
      NovaString = String.Concat(NovaString, Chr(Caractere))
Next
TextBox1.Text = String.Concat(TextBox1.Text, vbNewLine, NovaString)
Pronto, agora vamos dar o comando ao botão Enviar, clique duas vezes no botão enviar e na SUB que irá se criar coloque o seguinte comando :
Código:
Sock.SendData(">" & txtMensagem.Text)
TextBox1.Text = String.Concat(TextBox1.Text = vbNewLine & txtMensagem.Text)
txtMensagem.Text = ""
Beleza, já está pronto as funções, Chat Criado.

6. Criando o Servidor
Adicione ao seu Windows Application uma nova Form, na Form2 adicione uma ListBox, isso servirá para mostrar toda LOG do chat, tudo que uma pessoa falar irá aparecer ali, serve para o controle do ADM, Adicione agora mais duas TextBox uma para mostrar mensagens do servidor e outra para você enviar mensagens para todos conectados, crie também um Button e o próprio Sock, que baixamos anteriromente, nas Propriedades coloque assim :
Na TextBox de enviar - Name = txtMensagem.
No Botão de Enviar - Name = btnEnviar.
No Socket - Name = Sock
Agora, dando dois cliques no Form2.vb, você deverá colocar o código a seguir entre o Private Sub Form2_Load e o End Sub :
Código:
Sock.LocalPort = SUAPORT
Sock.Listen()
ListBox1.Items.Add("Servidor Online, bom chat!")
Agora na Form2 Events, abaixo do Form2.vb selecione o Sock e em Declarations selecione o ConnectionRequest, na sub que irá se criar, coloque isto :
Código:
Sock.Close()
ListBox1.Items.Add("Fazendo Conexão")
Sock.Accept(e.requestID)
ListBox1.Items.Add("Usuário conectado!")
Sock.SendData("Você se Conectou ao chato !")
Agora dê dois cliques no botão que criamos na Form2 e na sub dele adicione isto :
Código:
Sock.SendData(">" & txtMensagem.Text)
TextBox1.Text = String.Concat(TextBox1.Text, vbNewLine & txtMensagem.Text)
txtMensagem.Text = ""
ListBox1.Items.Add("Mensagem Enviada !")
Agora de novo, adicione outro evento para o Sock, desta vez o DataArrival, na Sub dele coloque isto (a mesma coisa de antes) :
Código:
Dim A as Object = Nothing
Dim NovaString As String = ""
Dim Caractere As Byte
ListBox1.Items.Add("Mensagem Recebida")
Sock.GetData(A)
For Each Caractere In A
      NovaString = String.Concat(NovaString, Chr(Caractere))
Next
TextBox1.Text = String.Concat(TextBox1.Text, vbNewLine, NovaString)
Pronto, nosso servidor e nosso Chat estão prontos.

7. Finalmente podemos "Chatear" ou não...
Agora para podermos terminar tudo mesmo, vá até o Form1.vb denovo e clique nele, na Sub Form1_Load coloque o seguinte código :
Código:
Form2.Show()
Pronto, agora pode testar seu chat com o debug e depois construir ele com o Build.

Boa Sorte !


Print do servidor criado :
Spoiler:


Créditos :
16bitz - Criador manualmente do tópico.
Visual Basic - Usado na criação e pelos códigos.
Windows - Pelo mswinsck.OCX.

Suporte não oficial,
16bitz.


Última edição por 16bitz em Sáb 02 Fev 2013, 19:05, editado 2 vez(es) (Motivo da edição : Arrumei uns códigos.)
Alvaro
Alvaro
Membro Lendário

<b>Idade</b> Idade : 25
<b>Posts</b> Posts : 3935
<b>Créditos</b> Créditos : 200
<b>Respeito</b> Respeito : 29
All users are.
Muito bom para pessoas como eu, que estão voltando ao VB.
Jhaz
Jhaz
Membro Lendário

<b>Idade</b> Idade : 28
<b>Posts</b> Posts : 2753
<b>Créditos</b> Créditos : 10000
<b>Respeito</b> Respeito : 18
Interessante, tenho a curiosidade de começar a trabalhar com VB.

Obrigado por compartilhar,
Será útil para pessoas como eu, ou como o Lyber.
covital
covital
Membro VIP

<b>Idade</b> Idade : 27
<b>Posts</b> Posts : 2107
<b>Créditos</b> Créditos : 0
<b>Respeito</b> Respeito : 18
God damn asshole
Interessante, tenho a curiosidade de começar a trabalhar com VB.

Obrigado por compartilhar,
Será útil para pessoas como eu, ou como o Lybe, ou como o Jhaz.
PontoZero
PontoZero
Novato

<b>Posts</b> Posts : 2
<b>Créditos</b> Créditos : 0
<b>Respeito</b> Respeito : 0
ProPixel
Olá , parabéns pelo tópico,
mais você poderia otimizar isso,
como por exemplo na parte do ip e porta de conexão,
ficaria mais interessante o próprio usuário escolher
o IP e porta ao qual ele quer se conectar, como por exemplo,

ao em vez de
Código:
 Sock.RemotePort = SUAPORTA
Sock.RemoteHost = Sock.localIP '127.0.0.1
Sock.Connect

Colocar

Código:

Dim Porta as long
Dim IP as long

Porta = txtPorta.text
IP = txtIP.text

 Sock.RemotePort = Porta
Sock.RemoteHost = IP
Sock.Connect

e no Server também , uma text
para pegar a porta que ele quer
definir para o servidor.

Porque ficaria mais facil para fazer
futuras alterações.


Algo parecido com isso,

Até mais [=
404
404
Membro

<b>Idade</b> Idade : 23
<b>Posts</b> Posts : 84
<b>Créditos</b> Créditos : 0
<b>Respeito</b> Respeito : 0
Carregando... Aguarde!
Warning : [16B!] Criando um Chat {SOCKET} YgSrOka
Cara muito bom o tutorial eu vou fazer um chat agora!!! não tem nem comparação com o xat apesar de ser mt antigo '~' mais vlw mesmo!!!
Koily
Koily
Coordenador

<b>Idade</b> Idade : 29
<b>Posts</b> Posts : 4744
<b>Créditos</b> Créditos : 250
<b>Respeito</b> Respeito : 36
Foco, força e fé.
Warning : [16B!] Criando um Chat {SOCKET} ZsaKMOb
Não tem comparação com o xat? Eu acho o xat horrível. '-' Qualquer um faz algo melhor.
404
404
Membro

<b>Idade</b> Idade : 23
<b>Posts</b> Posts : 84
<b>Créditos</b> Créditos : 0
<b>Respeito</b> Respeito : 0
Carregando... Aguarde!
Warning : [16B!] Criando um Chat {SOCKET} YgSrOka
Koily escreveu:Não tem comparação com o xat? Eu acho o xat horrível. '-' Qualquer um faz algo melhor.
com isso eu tenho que concordar opask e.e xat é perca de tempo eu só tenho um no meu blog hasusha
Koily
Koily
Coordenador

<b>Idade</b> Idade : 29
<b>Posts</b> Posts : 4744
<b>Créditos</b> Créditos : 250
<b>Respeito</b> Respeito : 36
Foco, força e fé.
Warning : [16B!] Criando um Chat {SOCKET} ZsaKMOb
Pois é cara, eu mesmo já fiz um chat e ficou bem melhor. skaposk
Conteúdo patrocinado
Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos