Siga-nos em...
Follow us on Twitter Follow us on Facebook Watch us on YouTube
Registro

Alpha Servers
Resultados 1 a 1 de 1

Hybrid View

  1. #1

    Avatar de FusioN
    Data de Ingresso
    Jul 2010
    Localização
    Rio de Janeiro - Brasil
    Idade
    29
    Posts
    434
    Agradecido
    18
    Agradeceu
    14
    Peso da Avaliação
    23

    Padrão [Medio]Tudo Sobre o Componente Winsock

    VB - Winsock Tutorial

    Descrição : tutorial sobre como trabalhar com o controle Winsock no Visual Basic.

    Índice


    » Introdução sobre o winsock
    » Iniciando
    » Propriedades do winsock e membros do winsock
    » Eventos do Winsock
    » Lidando com erros e estados de conexão


    Introdução sobre o winsock

    O componente winsock, presente no Windows, é um dos componentes mais interessantes que podemos citar. Com ele por exemplo, podemos criar chats, jogos multiplayers, clientes de email, e uma variedade de aplicações que use a internet como foco. Sua aplicação em Visual Basic, é bem simples, como veremos a seguir.

    Iniciando

    1) Inicie o Visual Basic e crie um projeto Standard EXE.

    2) Pressione CTRL+T ou ví em Project-> Components, e adicione o controle: Microsoft Winsock Control 6.0

    3) Adicione no form, o objeto WINSOCK, que se encontra na barra de componentes à esquerda.

    Propriedades do winsock e membros do winsock

    Ao adicionar o objeto no formulírio, observando suas propriedades, temos:

    Name: nome do controle

    Index: especifica se o controle é uma array.

    Left: Posicionamento à esquerda

    Localport: porta local do winsock

    Protocol: 0 - sckTCPProtocol(PROTOCOLO TCP) ou 1 -sckUDPProtcol(PROTOCOLO UDP)

    RemoteHost: host que iremos nos conectar

    RemotePort: porta que iremos nos conectar

    Tag: informações extra

    Top: posicionamento vertical


    Temos os seguintes membros constituintes do componente:

    Accept -> Aceita uma conexão
    Código de exemplo : winsock.accept(resquestid)
    Onde resquestid é o valor da requisição

    Bind -> Binda o winsock
    Código:
      winsock.Bind(portalocal,iplocal)
    BytesReceived -> Retorna o número de bytes recebidos


    Close -> Fecha uma conexão
    Código:
      winsock.close
    Connect -> Conecta à um host
    Código:
      winsock.connect - ' quando um host e porta jí foram especificados - ou winsock.connect(host,porta) caso contrírio.
    GetData -> Obtém dos dados recebidos em uma variível
    Código:
      winsock.getdata(variavel,tipo,max)
    Onde:
    Variavel = variavel que armazenarí os dados

    Opicionais:

    tipo = tipo de dados: vbstring(padrao), vblong(inteiro), vbsingle(float),vbdouble(double).

    Max = tamanho míximo de dados a receber.

    Listen -> Coloca o socket em modo de espera
    Código:
      winsock.listen
    LocalHostName -> Mostra o nome do host local.

    LocalIp -> Obtém o IP local

    LocalPort -> Obtém/Configura a Porta local

    Protocol -> Obtém/configura o protocolo: sckTCPProtocol ou sckUDPProtocol.

    RemoteHost -> Obtém/Configura hostname do host.

    RemoteHostIP -> Obtém o IP do host.

    RemotePort -> Obtém/Configura a porta remota.

    SendData -> Envia dados ao host remoto.
    Código:
     winsock.senddata(data)
    Onde data é o que se serí en*****.

    State -> Obtém o estado do socket(serão listados adiante).


    Eventos do Winsock

    Vimos as propriedades e membros do winsock, veremos agora a parte mais interessante em termos de interatividade.

    Evento Close
    Ocorre quando o socket é fechado


    Código:
    Private Sub Winsock1_Close()
    ' código aqui
    End Sub
    Evento Connect
    Ocorre quando uma conexão é completada


    Código:
    Private Sub Winsock1_Connect()
    'código aqui
    End Sub
    Evento ConnectionRequest
    Ocorre quando hí um pedido de conexão


    Código:
    Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
    'código aqui
    End Sub
    Onde requestID = ID do pedido de conexão a aceitar.

    Evento DataArrival
    Ocorre quando são recebidos dados.


    Código:
    Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    'código aqui
    End Sub
    Onde bytestotal = número de bytes recebidos

    Evento Error

    Ocorre quando foi resultado um erro.


    Código:
    Private Sub ws_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
    'Codigo aqui
    End Sub
    Os valores que nos interessa:

    number = número do erro
    Description = descrição do erro


    Evento SendComplete
    Ocorre quando o envio de dados é completado


    Código:
    Private Sub Winsock1_SendComplete()
    'código aqui
    End Sub

    Evento SendProgress

    Ocorre quando dados estão sendo en*****s


    Código:
    Private Sub Winsock1_SendProgress(ByVal bytesSent As Long, ByVal bytesRemaining As Long)
    'código aqui
    End Sub

    Onde
    :

    bytesSent
    = número de bytes en*****s;
    bytesRemaining = número de bytes restantes.

    Lidando com erros e estados de conexão

    Abaixo listarei as constantes que representam o comportamento do winsock, ao longo do processo.

    Erros mais comuns:

    sckAddressInUse -> Ocorre quando a porta utilizada na tentativa de colocar o socket em modo listen, jí estiver sendo usada.

    sckAddressNotAvaiable -> Ocorre quando na função Bind, é espeficifado um IP local invílido.

    sckAlreadyConnect -> Ocorre quando o socket jí estiver conectado e um pedido para que ele conecte-se é feito, sem fechí-lo previamente.

    sckBadState -> O estado do socket não permite tal operação.

    sckConnectAborted -> A conexão foi cancelada.

    sckConnectRefused -> Conexão recusada.

    sckConnectionReset -> A conexão foi reiniciada.

    sckHostNotFound -> Host não encontrado.

    sckTimedout -> Tempo esgotado

    sckWrongProtocol -> protocolo incorreto

    Manipulando erros:

    Exemplo:

    Código:
    Function enviar()
    On Error GoTo verificar
    Winsock1.SendData ("ENVIAR DADOS POR TCP SEM CONECTAR-SEANTES OCASIONA EM ERRO")
    Exit Function
    verificar:
    Select Case Err.Number
    Case sckBadState:
    End
    End Select
    End Function

    No exemplo acima, caso ocorra algum erro, a função é interrompida e salta para 'verificar'. Serí verificado o número do erro, se for o erro referente à sckBadState, o programa encerra.

    Pode-se usar o evento ERROR em algumas ocasiões.
    Exemplo:


    Código:
    Private Sub winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
    select case number
    case sckTimedout
    MsgBox Description
    end select
    winsock1.Close
    End Sub
    Estados do socket:

    sckClosed -> Socket fechado.
    sckClosing -> Socket fechando.
    sckConnecting -> Em processo de conexão.
    sckConnectionPending -> Pedido de conexão aguardando.
    sckError -> Erro no socket.
    sckHostResolved -> Host resolvido.
    sckListening -> Aguardando conexões.
    sckOpen -> Socket pronto para uso.
    SckResolvingHost -> Resolvendo host.

    Manipulando estados:
    Exemplo:


    Código:
    Function ver_estado()
    Select Case Winsock1.State
    Case sckClosed:
    MsgBox "Socket fechado"
    Winsock1.LocalPort = 1234
    Winsock1.Listen
    Case sckListening:
    MsgBox "Socket aguardando..."
    Winsock1.Close
    End Select
    End Function
    Bem , é isso, Espero que Com esse Tutorial Vocês Aprendam um Pouco Mais Sobre o Winsock.

    Creditos: dark_side
    Fonte: Pro Code
    Última edição por FusioN; 07-08-2010 às 12:25 PM.

 

 

Informações de Tópico

Usuários Navegando neste Tópico

Há 1 usuários navegando neste tópico. (0 registrados e 1 visitantes)

Tópicos Similares

  1. |Suporte| ERRO L-1 WINSOCK JOINSERVER
    Por Elektro no fórum Dúvidas
    Respostas: 3
    Último Post: 11-02-2015, 01:01 AM
  2. |Tutorial| Tudo Sobre Ot.
    Por KromeSykes no fórum Tibia | Tutoriais
    Respostas: 0
    Último Post: 12-06-2011, 02:46 AM
  3. |Tutorial| [Iniciante]Instalando um componente
    Por FusioN no fórum Visual Basic
    Respostas: 1
    Último Post: 03-06-2011, 10:36 PM
  4. |Tutorial| Tudo o que você queria saber sobre memórias de VGA (e tinha vergonha de perguntar)
    Por dcvitoria no fórum Equipamentos ( Hardware )
    Respostas: 0
    Último Post: 02-10-2009, 10:32 AM

Marcadores

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • Você não pode enviar respostas
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •