Parte3: Como usar pipes nomeados para comunicação entre processos no Visual Basic .NET ou no Visual Basic 2005

Criar um cliente de pipe nomeado

Para criar um cliente de pipe nomeado que se comunica com o servidor, execute as seguintes etapas:

  1. Chame a função CreateFile para criar um identificador para o pipe nomeado.
  2. Chame a função ReadFile ou WriteFile para se comunicar através do pipe.
  3. Chame a função CloseHandle no identificador criado na função CreateFile.

Também é possível usar uma transação de pipe nomeado para a comunicação cliente/servidor. A transação de pipe nomeado combina uma operação de escrita e uma operação de leitura em uma única operação de rede. Uma transação pode ser usada apenas em um pipe duplex do tipo mensagem. Os processos podem usar a função TransactNamedPipe ou a função CallNamedPipe para executar transações de pipe nomeado.

Neste exemplo de código, você usa a função CallNamedPipe para conectar ao servidor de pipe nomeado, escrever os dados no pipe e ler os dados no pipe.

Projetar um aplicativo do Windows que se comunica com o servidor de pipe nomeado

Para projetar um aplicativo do Visual Basic .NET ou do Visual Basic 2005 Windows usado para conectar ao servidor de pipe nomeado, execute as seguintes etapas:

  1. Inicie o Microsoft Visual Studio .NET ou o Microsoft Visual Studio 2005.
  2. No menu File, aponte para New e clique em Project.
  3. Em Project Types, clique em Visual Basic Projects e clique em Windows Application em Templates.

    Observação No Visual Studio 2005, clique em Visual Basic em Project Types.

  4. Na caixa Name clique em MyClientApp e clique em OK. Por padrão, um formulário chamado Form1 é criado.
  5. Adicione um controle Button ao formulário Form1.
  6. Clique com o botão direito do mouse em Button1 e clique em Properties.
  7. Defina a propriedade Text como Connect to the server.
  8. Adicione um controle Label ao formulário Form1. O controle Label Label1 é adicionado ao formulário Form1.
  9. Defina a propriedade Visible do controle Label Label1 como False.
  10. Adicione dois controles TextBox ao formulário Form1.
  11. Escrever código para conectar ao servidor de pipe nomeado

    Conecte ao servidor de pipe nomeado usando a função CallNamedPipe. Depois de conectar ao servidor, a função CallNamedPipe escreve para o pipe, lê no pipe e fecha o pipe. Para conectar ao servidor, ler e escrever os dados, execute as seguintes etapas:

    1. Na exibição Design, clique duas vezes em Connect to the server e adicione o seguinte código ao procedimento Button1_Click:

      Dim i, res, cbRead,numBytes As Integer
      Dim bArray() As Byte
      Dim temp As String
      
      numBytes = CInt(TextBox1.Text)
      If numBytes < 0 Then
          MessageBox.Show("Value must be at least 0.", MsgBoxStyle.OKOnly)
          Exit Sub
      End If
      If numBytes = 0 Then
          Label1.Visible = True
          Label1.Text = "The connection to the server is disconnected."
          Button1.Visible = False
          TextBox1.Visible = False
          TextBox2.Visible = False
      End If
      If numBytes > BUFFSIZE Then
          numBytes = BUFFSIZE
      End If
      
      ReDim bArray(numBytes) 'Create the return buffer
      'Call the CallNamedPipe function to do the transactions
       res = CallNamedPipe(pipeName, numBytes, Len(numBytes), bArray(0), numBytes, cbRead, 30000) 
      'Wait up to 30 seconds for a response
      'Format the data received, and then display the data in the text box
      If res > 0 Then
          temp = Format(bArray(0), " 000")
          For i = 1 To cbRead - 1
             If (i Mod 16) = 0 Then temp = temp & vbCrLf
                temp = temp & " " & Format(bArray(i), "000")
          Next i
          TextBox2.Text = temp
      Else
      MessageBox.Show("Error number " & Err.LastDllError & _
      "while trying to call the CallNamedPipe function.", MsgBoxStyle.OKOnly)
      End If

    2. Adicione o seguinte código antes do procedimento Button1_Click:

      Private Const pipeName As String = "\\.\pipe\MyPipe" Private Const BUFFSIZE As Integer = 10000 Private hpipe As Integer      Public Const INVALID_HANDLE_VALUE As Short = -1 Public Declare Function CallNamedPipe Lib "kernel32" Alias "CallNamedPipeA" _ (ByVal lpNamedPipeName As String, _ ByRef lpInBuffer As Integer, _ ByVal nInBufferSize As Integer, _ ByRef lpOutBuffer As Byte, _ ByVal nOutBufferSize As Integer, _ ByRef lpBytesRead As Integer, ByVal nTimeOut As Integer) As Integer

    3. No menu Build, clique em Build Solution.
    4. Verificar se o código funciona

      Para verificar se o código funciona, execute as seguintes etapas:

      1. Para iniciar o aplicativo do servidor, clique em Start no menu Debug do projeto MyServerApp.
      2. No formulário Form1, clique em Create a named pipe e em Wait for the client connections. Agora, o aplicativo está bloqueado e aguardando o cliente conectar.
      3. Para iniciar o aplicativo cliente, clique em Start no menu Debug do projeto MyClientApp.
      4. No formulário Form1, digite 10 na caixa TextBox1 e clique em Connect to the server. É possível ver a matriz de byte recebida na caixa TextBox2.
      5. Para desconectar o aplicativo cliente do servidor, digite 0 na caixa TextBox1 no aplicativo cliente e clique em Connect to the server.
      6. Feche o aplicativo cliente.
      7. Para desconectar a extremidade do servidor do pipe nomeado e fechar o aplicativo do servidor, clique em Disconnect the server no formulário Form1 do aplicativo do servidor.

fonte: microsoft

:: LUCIANA COSTA::

Anúncios

2 comentários sobre “Parte3: Como usar pipes nomeados para comunicação entre processos no Visual Basic .NET ou no Visual Basic 2005

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s