Visual basic 6 Winsock - Parte V 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 V

Ir para baixo

Visual basic 6 Winsock - Parte V Empty Visual basic 6 Winsock - Parte V

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

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. 

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 e Membros
Ao adicionar o objeto no formulário, observando suas propriedades:

Name: Nome do Controle
Index: Especifica se é um array de controles
Left: Posicionamento à esquerda
Localport: Porta local
Protocol: 0 - sckTCPProtocol(TCP) ou 1 -  sckUDPProtcol(UDP)
RemoteHost: Host alvo para conectar
RemotePort: Porta alvo para conectar
Tag: Informações Extra
Top: Posicionamento Vertical

Membros do componente:

Accept:
Aceita uma conexão.
Code: -------------------------------------------------------------Selecionar conteúdo
Código:
Winsock.Accept(requestID)

resquestID é o valor da requisição

Bind:
Binda o winsock.
Code: -------------------------------------------------------------Selecionar conteúdo
Código:
Winsock.Bind(PORTA_LOCAL,IP_LOCAL)

BytesReceived: 
Retorna o número de bytes recebidos

Close:
Fecha uma conexão
Code: -------------------------------------------------------------Selecionar conteúdo
Código:
Winsock.Close


Connect:
Conecta à um host
Code: -------------------------------------------------------------Selecionar conteúdo
Código:
Winsock.Connect  'Quando um host e porta já foram especificados
Winsock.Connect(IP, Porta) 


GetData:
Obtém dos dados recebidos em uma variível
Code: -------------------------------------------------------------Selecionar conteúdo
Código:
Winsock.GetData(Variavel, Tipo, Max)

Variavel= Variavel que armazenará os dados
Opcionais:
Tipo = Tipo de dados: vbstring(padrao), vblong(inteiro), vbbyte
Max = Tamanho máximo de dados a receber.

Listen:
Coloca o socket em modo de espera
Code: -------------------------------------------------------------Selecionar conteúdo
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 e 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
Code: -------------------------------------------------------------Selecionar conteúdo
Código:
Winsock.Senddata(Data)

Data = O que será enviado

State: Obtém o estado do socket (listados adiante)

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

Close:
Ocorre quando o socket é fechado
Code: -------------------------------------------------------------Selecionar conteúdo
Código:
Private Sub Winsock1_Close()
' Códigos
End Sub


Connect:
Ocorre quando uma conexão é completada
Code: -------------------------------------------------------------Selecionar conteúdo
Código:
Private Sub Winsock1_Connect()
' Códigos
End Sub


ConnectionRequest:
Ocorre quando há um pedido de conexão
Code: -------------------------------------------------------------Selecionar conteúdo
Código:
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
' Códigos
End Sub

requestID = ID do pedido de conexão a aceitar

DataArrival:
Ocorre quando são recebidos dados.
Code: -------------------------------------------------------------Selecionar conteúdo
Código:
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
' Códigos
End Sub

bytestotal = número de bytes recebidos

Error:
Ocorre quando foi resultado um erro.
Code: -------------------------------------------------------------Selecionar conteúdo
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)
' Códigos
End Sub

Os valores que nos interessa
number = número do erro
description = descrição do erro

SendComplete:
Ocorre quando o envio de dados é completado
Code: -------------------------------------------------------------Selecionar conteúdo
Código:
Private Sub Winsock1_SendComplete()
' Códigos
End Sub


SendProgress:
Ocorre quando dados estão sendo enviados
Code: -------------------------------------------------------------Selecionar conteúdo
Código:
Private Sub Winsock1_SendProgress(ByVal bytesSent As Long, ByVal bytesRemaining As Long)
' Códigos
End Sub

bytesSent = número de bytes enviados
bytesRemaining = número de bytes restantes

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 fecha-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 1:
Code: -------------------------------------------------------------Selecionar conteúdo
Código:
Function Enviar()
On Error GoTo verificar

Winsock1.SendData ("Enviar dados por TCP sem conectar-se antes, 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 2:
Code: -------------------------------------------------------------Selecionar conteúdo
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 1:
Code: -------------------------------------------------------------Selecionar conteúdo
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

Por: DarK_Side e FusioN
DragonicK
DragonicK
Experiente
Experiente

Mensagens : 543
Créditos : 81

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

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