Como programar a interface do Microsoft Windows Sockets e as conexões de rede no Visual Basic .NET ou no Visual Basic 2005

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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 821768
Sumário
Este artigo passo a passo descreve como programar a interface do Microsoft Windows Sockets (Winsock) e as conexões de rede no Microsoft Visual Basic .NET ou no Microsoft Visual Basic 2005. No exemplo, um simples aplicativo de cliente TCP (Transfer Control Protocol) que é chamado TestTCPClient e um simples aplicativo TCP servidor (escuta) que é chamado TestTCPServer usam a interface Windows Sockets para se comunicarem entre si.

back to the top

Criar um aplicativo de cliente TCP


  1. Inicie o Microsoft Visual Studio .NET ou Microsoft Visual Basic 2005.
  2. No menu arquivo , clique em novo e, em seguida, clique em Project .
  3. Em Project types , clique em Projetos do Visual Basic .

    Observação No Visual Studio 2005, clique em Visual Basic em Project Types .
  4. Em modelos , clique em Console Application .
  5. Nome do projeto TestTCPClient e, em seguida, clique em OK .

    Por padrão, Module1.vb é criado.
  6. Substitua o código no Module1.vb com o seguinte código:
    Imports System.Net.SocketsImports System.TextClass CTestTCPClient    Shared Sub Main()        Dim tcpClient As New System.Net.Sockets.TcpClient        '"Localhost" string is used when the client and the listener are on the same computer.        'If the listener is listening at a computer that is different from the client, provide the host name of the computer        'where the listener is listening.        tcpClient.Connect("Localhost", 8000)        Dim networkStream As NetworkStream = tcpClient.GetStream()        If networkStream.CanWrite And networkStream.CanRead Then            ' Do a simple write.            Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes("Is anybody listening...")            networkStream.Write(sendBytes, 0, sendBytes.Length)            ' Read the NetworkStream into a byte buffer.            Dim bytes(tcpClient.ReceiveBufferSize) As Byte            networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))            ' Output the data received from the host to the console.            Dim returndata As String = Encoding.ASCII.GetString(bytes)            Console.WriteLine(("TCP Server returned: " + returndata))        Else            If Not networkStream.CanRead Then                Console.WriteLine("Could not write data to data stream")                tcpClient.Close()            Else                If Not networkStream.CanWrite Then                    Console.WriteLine("Could not read data from data stream")                    tcpClient.Close()                End If            End If        End If        ' Pause to let the user view the console output.        Console.ReadLine()    End SubEnd Class 
    este código cria uma nova instância da classe tcpClient , chama o conectar método e ganhos de acesso para o fluxo de dados subjacente usando o método GetStream() da classe NetworkStream . A mensagem é convertida em uma matriz de bytes enviado para o fluxo de dados e leia o fluxo de dados para a resposta do aplicativo de servidor TCP (escuta).
back to the top

Criar um servidor TCP Application (escuta)

  1. Inicie o Microsoft Visual Studio .NET ou Microsoft Visual Studio 2005.
  2. No menu arquivo , clique em novo e, em seguida, clique em Project .
  3. Em Project types , clique em Projetos do Visual Basic .

    Observação No Visual Studio 2005, clique em Visual Basic em Project Types .
  4. Em modelos , clique em Console Application .
  5. Nome do projeto TestTCPServer e, em seguida, clique em OK .

    Por padrão, Moudle1.vb é criado.
  6. Substituir o código a seguir com o código DnsPermissionAttribute dos Module1.vb:
    Imports System.Net.SocketsImports System.netImports System.TextImports System.Net.DnsPermissionAttributeImports System.Security.Permissions'DnsPermissionAttribute specifies permission to request information from Domain Name Servers.<DnsPermissionAttribute(SecurityAction.Demand, Unrestricted:=True)> Class CTestTCPServer    Shared Sub Main()        'Listening must be on the same port that the client is connected on.         Const portNumber As Integer = 8000        '"Localhost" string is used when the client and the listener are on the same computer.        'If the listener is listening at a computer that is different from the client, then provide the host name of the computer        'where the listener is listening.        Dim tcpListener As New TcpListener(CType(Dns.Resolve("Localhost").AddressList(0), IPAddress), portNumber)        'Comment the previous line and uncomment the following line if you are using Visual Basic .NET (2003).        'Dim tcpListener As New TcpListener(portNumber)        tcpListener.Start()        Console.WriteLine("TCP Server is up and waiting for Client connection...")        Try            ''Accept the pending client connection and return a TcpClient for communication.             Dim tcpClient As TcpClient = tcpListener.AcceptTcpClient()            Console.WriteLine("Connection accepted.")            ' Get the data stream.            Dim networkStream As NetworkStream = tcpClient.GetStream()            ' Read the data stream into a byte array.            Dim bytes(tcpClient.ReceiveBufferSize) As Byte            networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))            ' Return the data received from the client to the console.            Dim clientdata As String = Encoding.ASCII.GetString(bytes)            Console.WriteLine(("Client sent: " + clientdata))            Dim responseString As String = "Successfully connected to TCP server."            Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes(responseString)            networkStream.Write(sendBytes, 0, sendBytes.Length)            Console.WriteLine(("Message Sent by TCP Server /> : " + responseString))            'Close TcpListener and TcpClient.            tcpClient.Close()            tcpListener.Stop()            Console.WriteLine("Exit")            Console.ReadLine()        Catch e As Exception            Console.WriteLine(e.ToString())            Console.ReadLine()        End Try    End SubEnd Class
    TestTCPServer o aplicativo cria uma nova instância da classe tcpListener na porta, chama o método Start() e, em seguida, aceita a solicitação pendente de cliente usando o método AcceptTcpClient() . O método AcceptTcpClient() retorna o objeto tcpClient que você pode usar para enviar e receber dados.
back to the top

Testar o exemplo

Para testar o exemplo, criar e executar o aplicativo TestTCPServer e em seguida, criar e executar o aplicativo TestTCPClient. As mensagens na janela do console indicam que o TestTCPClient aplicativo e o aplicativo TestTCPServer estão se comunicando por meio da interface Windows Sockets.
back to the top
Referências
Para obter mais informações sobre a classe Sockets , visite o seguinte site da Web Microsoft Developer Network (MSDN):back to the top

Propriedades

ID do Artigo: 821768 - Última Revisão: 04/19/2007 07:34:18 - Revisão: 2.5

Microsoft Visual Basic 2005, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition

  • kbmt kbvs2005applies kbvs2005swept kbwinsock kbdev kbconsole kbhowtomaster KB821768 KbMtpt
Comentários