ACC2000: Dois exemplos que utilizam o Winsock ActiveX controlo

Traduções de Artigos Traduções de Artigos
Artigo: 209905 - Ver produtos para os quais este artigo se aplica.
Avançado: Requer conhecimentos avançados sobre codificação, interoperabilidade e multi-utilizador.

Este artigo aplica-se apenas a uma base de dados do Microsoft Access (.mdb).

Expandir tudo | Reduzir tudo

Nesta página

Sumário

Este artigo fornece dois exemplos de como utilizar o controlo ActiveX do Winsock instalado com o Microsoft Office 2000 Developer Edition Tools.

Mais Informação

O controlo Winsock permite-lhe ligar a um computador e troca de dados remoto entre computadores cliente e servidor. O controlo Winsock suporta dois protocolos: TCP (Transmission Control Protocol) e protocolo de datagrama de utilizador (UDP, User Datagram Protocol).

TCP é um protocolo baseado em ligação. Uma analogia comum utilizada para descrever TCP é de um telefone. Nesta analogia, aos autores das chamadas tem estabelecer uma ligação em ambas as extremidades da linha telefónica antes de eles podem trocar informações. Um computador utilizando TCP tem de ter confirmação do computador receptor que uma ligação foi estabelecida antes dos dois computadores podem transferir dados.

UDP é um protocolo sem ligação. Uma analogia comum utilizada para descrever o UDP é que uma opção. Este analogia, uma estação de rádio difunde o sinal sem saber por tem a certeza se qualquer pessoa que está à escuta. Um computador utilizando UDP envia dados e não requer uma ligação com o computador na extremidade receptora da transmissão de.

Exemplo 1 - utilizar o controlo ActiveX do Winsock com TCP

Este exemplo utiliza o mesmo computador enviar e receber dados. Criar um formulário com três controlos de Winsock. Um dos controlos emula o ambiente do computador cliente enviar um pedido de ligação para um servidor. Os outros dois controlos emular o ambiente de um computador de servidor: um controlo recebe um pedido de ligação e o outro aceita o pedido que diz respeito.
  1. Crie uma base de dados vazia novo denominado WinsockDemo.mdb.
  2. Crie o seguinte novo formulário (não baseado em qualquer tabela ou consulta) na vista de estrutura:
       Form: TCPForm
       ---------------------------------
       Caption: TCP Form
    
       Command button:
          Name: cmdListen
          Caption: Listen
       Command button:
          Name: cmdConnect
          Caption: Establish Connection
       Command button:
          Name: cmdSend
          Caption: Send Data
       Command button:
          Name: cmdRespond
          Caption: Respond
       Command button:
          Name: cmdClose
          Caption: Close Connection
       Text box:
          Name: Text1
          Label Caption: Data Received:
       Winsock control:
          Name: axWinsockListen
       Winsock control:
          Name: axWinsockClient
       Winsock control:
          Name: axWinsockServer
    					
  3. No menu Ver , clique em código .
  4. Escreva a seguinte linha na secção declaração do módulo de classe do formulário:
    Dim wsListen, wsClient, wsServer As Winsock
    					
  5. Escreva os seguintes procedimentos.

    Para ilustrar ideal como funciona o controlo Winsock entre cliente e servidor, os procedimentos são listados pela ordem em que aparecem.
    Private Sub Form_Load()
       ' Set one server Winsock control and the client Winsock control
       ' when the form loads.
       Set wsListen = Me!axWinsockListen.Object
       Set wsClient = Me!axWinsockClient.Object
    
       ' Set the protocol for each control.
       wsListen.Protocol = sckTCPProtocol
       wsClient.Protocol = sckTCPProtocol
    
       ' Set the remote host on the client Winsock control. Because
       ' client and server are the same computer in this example, set
       ' RemoteHost equal to LocalIP.
       wsClient.RemoteHost = wsListen.LocalIP
    
       ' Set a local and a remote port for the client.
       wsClient.RemotePort = 100
       wsClient.LocalPort = 99
    
       ' Set a local and a remote port for the server. Note that the
       ' server RemotePort is the client LocalPort and vice versa.
       wsListen.LocalPort = 100
       wsListen.RemotePort = 99
    End Sub
    
    Private Sub cmdListen_Click()
       ' Start the server listening for a connection request.
       wsListen.Listen
       Msgbox "Server is waiting for a connection request."
    End Sub
    
    Private Sub cmdConnect_Click()
       ' The client requests a connection with the server.
       Msgbox "Client requested connection with server."
       wsClient.Connect
    End Sub
    
    Private Sub axWinsockListen_ConnectionRequest(ByVal requestID As _
       Long)
       ' When the server receives a connection request, set the second
       ' Winsock on the server to accept the request.
       Set wsServer = Me!axWinsockServer.Object
       wsServer.Protocol = sckTCPProtocol
    
       ' Accept the connection request.
       wsServer.Accept requestID
       Msgbox "Server accepted client connection request."
    End Sub
    
    Private Sub axWinsockClient_Connect()
       ' When the server accepts the connection request, the Connect
       ' event fires on the client. Display a message indicating success.
       MsgBox "Connection Successful!"
    End Sub
    
    Private Sub cmdSend_Click()
       ' After a connection is established, use a command button to send
       ' data from client to server.
       wsClient.SendData "Hello"
    End Sub
    
    Private Sub axWinsockServer_DataArrival(ByVal bytesTotal As Long)
       Dim strClientMsg As String
    
       ' The DataArrival event fires on the server when the client sends
       ' information. Get the data and display it in a text box.
       wsServer.GetData strClientMsg, vbString
       Me!Text1.Value = strClientMsg
    End Sub
    
    Private Sub cmdRespond_Click()
       ' Send a message from the server to the client.
       wsServer.SendData "Thanks for the message!"
    End Sub
    
    Private Sub axWinsockClient_DataArrival(ByVal bytesTotal As Long)
       Dim strServerMsg As String
    
       ' The DataArrival event fires on the client when the server sends
       ' information. Get the data and display it in a text box.
       wsClient.GetData strServerMsg
       Me!Text1.Value = strServerMsg
    End Sub
    
    Private Sub cmdClose_Click()
       ' Close the server connections
       wsServer.Close
       wsListen.Close
       Msgbox "Server connections closed."
    End Sub
    
    Private Sub axWinsockClient_Close()
       ' Close event on client fires after server closes connection.
       ' Close the client connection and display a message box.
       wsClient.Close
       MsgBox "Client connections closed. Good-Bye!"
    End Sub
    					
  6. Guarde e feche TCPForm.
  7. Abrir TCPForm na vista de formulário e efectuar as seguintes tarefas:
    1. Clique no botão escuta para iniciar o servidor em escuta de um pedido de ligação.

      Repare na caixa mensagem que aparece para indicar que o servidor está a aguardar uma ligação.
    2. Clique no botão Estabelecer ligação .

      Tenha em atenção a caixa de mensagem do cliente verificar a ligação foi bem sucedida e a caixa de mensagem do servidor verificar que o pedido foi aceite.
    3. Clique no botão Enviar dados e repare que a mensagem de cliente "Olá" é apresentada na caixa de texto no formulário.
    4. Clique no botão responder e repare que a mensagem de servidor "Obrigado a mensagem!" é apresentada na caixa de texto.
    5. Clique no botão Fechar ligação e, tenha em atenção as caixas de mensagens do cliente e servidor que indica que as ligações foram encerradas.

Exemplo 2 - utilizar o controlo ActiveX do Winsock com UDP

Este exemplo utiliza o mesmo computador enviar e receber dados. Criar um formulário com dois controlos de Winsock: um dos controlos emula o computador cliente e o controlo emula o servidor.
  1. Crie uma nova base de dados vazia denominada WinsockDemo.mdb ou utilizar a base de dados que criou no exemplo anterior.
  2. Crie o seguinte novo formulário (não baseado em qualquer tabela ou consulta) na vista de estrutura:
       Form: UDPForm
       --------------------------------
       Caption: UDP Form
    
       Command button:
         Name: cmdSend
            Caption: Send Data
         Text box:
            Name: Text1
            Label Caption: Data Received:
         Winsock control:
            Name: axWinsockClient
         Winsock control:
            Name: axWinsockServer
    					
  3. No menu Ver , clique em código .
  4. Escreva a seguinte linha na secção declaração do módulo de classe do formulário:
    Dim wsClient, wsServer As Winsock
    					
  5. Escreva os seguintes procedimentos.

    Para ilustrar ideal como funciona o controlo Winsock entre cliente e servidor, os procedimentos são listados pela ordem em que aparecem.
    Private Sub Form_Load()
       ' Set the control objects when the form loads.
       Set wsClient = Me!axWinsockClient.Object
       Set wsServer = Me!axWinsockServer.Object
    
       ' Set the protocol for client and server.
       wsClient.Protocol = sckUDPProtocol
       wsServer.Protocol = sckUDPProtocol
    
       ' Set the host and ports for client and server. Because client
       ' and server are the same computer in this example, set RemoteHost
       ' equal to LocalIP.
       wsServer.RemoteHost = wsClient.LocalIP
       wsServer.RemotePort = 1007
       wsClient.Bind 1007
    End Sub
    
    Private Sub CmdSend_Click()
       ' Send a broadcast message from the server.
       wsServer.SendData "Hello"
    End Sub
    
    Private Sub axWinsockClient_DataArrival(ByVal bytesTotal As Long)
       Dim strServerMsg As String
    
       ' When a message arrives from the server, display it in a text
       ' box.
       wsClient.GetData strServerMsg, vbString
       Me!Text1.Value = strServerMsg
    End Sub
    					
  6. Guarde e feche o formulário UDPForm.
  7. Abra UDPForm na vista de formulário e clique no botão Enviar dados .

    Note que a caixa de texto apresenta "Olá". Visto tratar-se uma transmissão de caminho fixo a seguir na rede, não é necessário estabelecer uma ligação de cliente / servidor.

Propriedades

Artigo: 209905 - Última revisão: 28 de junho de 2004 - Revisão: 2.0
A informação contida neste artigo aplica-se a:
  • Microsoft Access 2000 Standard Edition
Palavras-chave: 
kbmt kbhowto kbinfo kbusage KB209905 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 209905

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com