Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

RSS iMasters

[Resolvido] VB .NET - Programação MultiThread Socket - Cliente

Recommended Posts

A Programação Socket multithread significa que um servidor multithread pode se comunicar com mais de um cliente ao mesmo tempo usando a comunicação via socket.

A idéia básica por trás da programação multithread com sockets é que sempre que servidor receber um pedido de ligação de um cliente, o servidor criará uma Thread em separado para a solicitação de cada cliente.

Isso significa que para cada cliente, existe uma thread do cliente em separado. Assim, o cliente pode se comunicar de forma independente com sua própria Thread cliente no servidor.

39946.gif

Vamos então criar uma aplicação multithread com sockets.

Antes do VB.NET para fazer uma comunicação cliente/servidor usando TCP/IP tínhamos que usar a biblioteca winsock. isto demandava muito código e a utilização de API´s.

O VB.NET fornece um conjunto de classes em System.Net.sockets que torna a nossa vida mais fácil, pois elas fornecem um conjunto de funcionalidades que abstraem muitas tarefas que antes exigiam a criação de código extra.

Antes de entrar na aplicação propriamente dita vamos recordar alguns conceitos básicos.

O que é um socket?

Um socket pode ser entendido como uma porta de um canal de comunicação que permite a um processo executando em um computador enviar/receber mensagens para/de outro processo que pode estar sendo executado no mesmo computador ou num computador remoto.

Os sockets permitem então a comunicação processo a processo da seguinte forma:

  •     comunicação local: processos locais usando sockets locais
  •     comunicação remota: processos remotos usando sockets em rede (TCP/IP)

Criando o Cliente Multithread

Abra o Visual Basic 2010 Express Edition e crie um novo projeto do tipo Windows Forms Applications com o nome ServidorSocket.

O Programa MultiThreaded Cliente é um aplicativo do tipo Windows Forms Application. Aqui, o programa cliente está conectado à porta 2502 do servidor, e no endereço IP "127.0.0.1", pois no nosso caso o Cliente e o Servidor estão rodando na mesma maquina.

clientSocket.Connect ("127.0.0.1", 2502)

Quando o cliente se conectar ao Servidor, o Servidor cria uma thread separada para a comunicação do cliente. Assim, podemos ligar mais de um cliente para podermos nos comunicar ao mesmo tempo.

Vamos definir o leiaute da aplicação no formulário form1.vb conforme a figura abaixo:

39947.gif

Controles usados no formulário:

  •  Label - Label1
  •  TextBox - txtMensagemCliente
  •  Button - BtnConectar

No código do formulário começamos definindo os namespaces usados no projeto:

  • Imports System.Net.Sockets
  • Imports System.Text

Depois definimos as variáveis que iremos usar:

  • Dim SocketCliente As New System.Net.Sockets.TcpClient()
  • Dim servidorStream As NetworkStream

No evento Click do botão Conectar ao Servidor temos o seguinte código:

  Private Sub btnConectar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConectar.Click

 

Dim servidorStream As NetworkStream = SocketCliente.GetStream()

Dim tamanhoBuffer As Integer

Dim StreamSaida As Byte() = System.Text.Encoding.ASCII.GetBytes("Mensagem do Cliente$")

 

servidorStream.Write(StreamSaida, 0, StreamSaida.Length)

servidorStream.Flush()

 

Dim StreamEntrada(10024) As Byte

 

tamanhoBuffer = SocketCliente.ReceiveBufferSize

servidorStream.Read(StreamEntrada, 0, tamanhoBuffer)

 

Dim dadosRetornados As String = System.Text.Encoding.ASCII.GetString(StreamEntrada)

 

msg("Dados do Servidor => : " + dadosRetornados)

 

End Sub

No evento Load do formulário form1 digite o código que realiza a conexão com o servidor no IP e portas definidos:

 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

 

        msg("Cliente Iniciado")

        SocketCliente.Connect("127.0.0.1", 2502)

        Label1.Text = "Programa Cliente Socket - Conectado ao Servidor ..."

 

    End Sub

A rotina para enviar mensagens é dada a seguir:

 Sub msg(ByVal texto As String)

        txtMensagemCliente.Text = txtMensagemCliente.Text + Environment.NewLine + " >> " + texto

    End Sub

E assim, de forma bem simples, criamos uma aplicação multithread usando sockets que irá atuar como cliente.

Pegue a primeira parte do projeto completo aqui: SocketCliente.zip

 

http://imasters.com.br/artigo/21834/visual-basic/vb-net-programacao-multithread-socket-cliente

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.