A essa altura você já deve ter percebido que a Internet é um caminho sem volta. Dai você pode tirar a seguinte conclusão : "Quem dominar as tecnologias para a Web sai na frente ! ". (Rapazinho inteligente !!). Aproveitando o gancho vamos apresentar um controle presente no VB 6/VB 5 que nos permite comunicar na grande WEB.
Pra começar vamos dar uma pincelada em alguns conceitos básicos que você vai precisar saber para poder usar o Winsock.
Conceitos Básicos
Na Internet temos uma grande quantidade de máquinas conectadas entre si formando a grande WEB. Essas máquinas (seu computador) podem se comportar como um cliente e/ou como um servidor havendo assim a possibilidade da troca de informações entre elas. Para se comunicarem essas máquinas utilizam um protocolo de regras comum e um endereço de identificação único. Agora vamos ao glossário:
Porta | Serviço |
110 | POP3 |
25 | SMTP |
21 | FTP |
80 | HTTP |
6667 | IRC |
23 | TELNET |
79 | FINGER |
Assim a porta 21 realiza o serviço FTP - File Transfer Protocol ; já a porta 80 espera por solicitações de conexão WEB .
O controle Winsock
A primeira coisa que você deve fazer para usar o controle Winsock no seu projeto é carregar o controle na barra de ferramentas. Para isso selecione a opção Project no menu e a seguir clique em Components... .Na caixa de diálogo selecione o controle - Microsoft Winsock Control como na figura abaixo:
Fig 1 - Selecionando o Controle Winsock | Fig 2 - O icone do na barra de ferramentas |
Após clicar no botão OK o controle será exibido na caixa de ferramentas e estará pronto para ser inserido no seu projeto. Este controle somente é visível em tempo de desenvolvimento.
Propriedades e Métodos do controle Winsock
Agora veremos as propriedades mais importantes do controle:
Propriedade | Descrição |
LocalPort | É a porta que seu computador usará. Você pode definir a porta com até 4 digitos (Ex: 1234. |
RemotePort | É a porta da qual sua máquina recebe os dados. |
Protocol | Protocolo a ser usado na transmissão. ( TCP ou UPD ) |
RemoteHostIP | Retorna o endereço IP de uma máquina remota |
LocalIP | Retorna o IP de uma máquina local. |
LocalHostName | Retorna o nome da máquina local. |
BytesReceived | Determina a quantidade de dados recebidos. (bytes) |
State | Define o estado atual do controle. (Veja os possíveis definições desta propriedade. (*) |
(*) Possíveis definições da propriedade State:
Constante | Valor | Descrição |
sckClosed | 0 | Default. Closed |
sckOpen | 1 | Open |
sckListening | 2 | Listening |
sckConnectionPending | 3 | Connection pending |
sckResolvingHost | 4 | Resolving host |
sckHostResolved | 5 | Host resolved |
sckConnecting | 6 | Connecting |
sckConnected | 7 | Connected |
sckClosing | 8 | Peer is closing the connection |
sckError | 9 | Error |
Principais métodos e eventos do controle Winsock
Método/Evento | Descrição |
Accept | Aceita uma conexão TCP. |
Connect | Solicita uma conexão TCP. Ocorre quando há uma conexão com outro computador. |
Close | Fecha uma conexão TCP. |
DataArrival | Onde você coloca o código fonte que você deseja executar quando a informação chegar pela portal local. |
GetData | Efetua a recepção de dados |
Listen | Espera por uma conexão TCP. |
SendData | Envia dados. |
SendProgress | Indica que você quer controlar a conexão enquanto ela estiver enviando os dados. |
SendComplete | Indica o que você quer que aconteça depois que a transferência foi terminada. Ex. Exibir uma mensagem. |
ConnectionRequest | Solicita uma conexão. |
Error | Ocorreu um erro. |
Usando o Controle Winsock
Ao roda sua aplicação , se ela estiver no modo servidor esperando alguma solicitação você deverá definir a propriedade LocaPort e invocar o método Listen para deixar o computador disponível.
winsock1.LocalPort
= 1001
winsock1.Listen
Se estiver no modo cliente você vai precisar definir as propriedades Remote-Host ou RemoteHostIP e Remote Port . Depois basta usar o método Connect para solicitar uma conexão.
Winsock1.RemoteHost
= "geocities.com/"
Winsock1.RemotePort = 80
Winsock1.Connect
Quando você se conecta usando Connect é executado o evento ConnectionRequest do controle Winsock o qual possui o parâmetro requestID. Este parâmetro serve para identificar a conexão de forma única.
Após a conexão ter sido estabelecida podemos enviar e receber dados, para enviar dados usamos o método SendData :
Winsock1.SendData "dados a serem enviados"
Para receber os dados devemos utilizar o método GetData tendo como parâmetro o nome da variável que irá receber os dados. Quando os dados sao recebidos eles são colocados no buffer de entrada do controle Winsock e o evento DataArrival é disparado, assim devemos usar o método GetData neste evento:
Private
Winsock1_DataArrival()
Dim variavel
winsock1.GetData variavel
...
...
End Sub
Exemplos Práticos usando o Controle Winsock
Vamos agora por em prática toda essa teoria e mostrar através de pequenos projetos como usar o controle Winsock.Em todos os projetos você deverá fazer referencia ao controle Microsoft Winsock Control como explicado anteriormente.
1-) Capturando e exibindo o número IP do seu computador durante uma conexão Internet.
Private
Sub Command1_Click() Text1.Text = Winsock1.LocalIP End Sub |
Ao clicar no botão de comando ( estando conectado) você obtêm o seu IP. Mais simples impossível...
2-) Fazendo o Download de uma página na Internet
Vamos mostrar como usar o controle Winsock para fazer o download de um página de um site. Iremos fazer o download da página index.html do me site no servidor geocities. Para isso temos que definir o nome do servidor a porta para conexão e o local da página que queremos baixar.
Private Sub Command1_Click() Winsock1.RemoteHost = "geocities.com" Winsock1.RemotePort = 80 Winsock1.Connect End Sub |
Aqui definimos o nome do servidor e a porta para conexão |
Private Sub Winsock1_Connect() Dim strCommand As String Dim strWebPage As String strWebPage = "http://www.geocities.com/macoratti/index.html" strCommand = "GET " + strWebPage + " HTTP/1.0" + vbCrLf strCommand = strCommand + "Accept: */*" + vbCrLf strCommand = strCommand + "Accept: text/html" + vbCrLf strCommand = strCommand + vbCrLf Winsock1.SendData strCommand End Sub |
Aqui definimos o local da página |
Private Sub
Winsock1_DataArrival(ByVal bytesTotal As Long) Dim webData As String Winsock1.GetData webData, vbString txtwebpage.Text = txtwebpage.Text + webData End Sub |
Aqui recebemos os dados |
Pronto !!! conecte-se na internet e rode o aplicativo. Após alguns segundos teremos o seguinte:
Até o próximo artigo... ;-)
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências: