MMORPG Brasil
Ola, visitante! Agradecemos sua visita, para ter acesso a todo nosso conteúdo recomendamos que faça um cadastro no fórum, com ele você pode participar de tópicos e ter acesso a todas áreas da comunidade!

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

MMORPG Brasil
Ola, visitante! Agradecemos sua visita, para ter acesso a todo nosso conteúdo recomendamos que faça um cadastro no fórum, com ele você pode participar de tópicos e ter acesso a todas áreas da comunidade!
MMORPG Brasil
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Visual basic 6 Winsock - Parte V

2 participantes

Ir para baixo

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

Mensagem por FusioN Dom 28 Mar 2010, 12:10

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.
Código:
Winsock.Accept(requestID)
resquestID é o valor da requisição

Bind:
Binda o winsock.
Código:
Winsock.Bind(PORTA_LOCAL,IP_LOCAL)
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
Winsock.Connect(IP, Porta) 

GetData:
Obtém dos dados recebidos em uma variível
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
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
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
Código:
Private Sub Winsock1_Close()
' Códigos
End Sub

Connect:
Ocorre quando uma conexão é completada
Código:
Private Sub Winsock1_Connect()
' Códigos
End Sub

ConnectionRequest:
Ocorre quando há um pedido de conexão
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.
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.
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
Código:
Private Sub Winsock1_SendComplete()
' Códigos
End Sub

SendProgress:
Ocorre quando dados estão sendo enviados
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:
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:
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:
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
FusioN
FusioN
Membro Sênior
Membro Sênior

Mensagens : 273

http://www.mmorpgbr.com

Ir para o topo Ir para baixo

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

Mensagem por DragonicK Sáb 31 Ago 2013, 06:35

Para não criar outro tópico, apenas editei e mudei o título para Visual basic 6 Winsock - Parte V como continuação das aulas. Essa resposta é para dizer que o tópico está ativo novamente.
DragonicK
DragonicK
Membro de Honra
Membro de Honra

Mensagens : 315

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