Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Para começar a enviar dados para um servidor, um cliente chama um dos procedimentos remotos do servidor. Este procedimento deve repetir a chamada do procedimento pull no stub do servidor. O compilador MIDL usa o arquivo IDL do aplicativo para gerar automaticamente o procedimento pull do servidor.
Cada vez que o programa de servidor invoca o procedimento pull em seu stub, o procedimento pull recebe blocos de dados do cliente. Desserializa os dados no buffer do servidor. O procedimento remoto do servidor pode então processar esses dados de qualquer forma necessária. O loop continua até que o servidor receba um buffer de comprimento zero.
O exemplo a seguir é do programa Pipedemo contido nos exemplos que vêm com o Platform Software Development Kit (SDK). Ele ilustra um procedimento de servidor remoto que usa um pipe para extrair dados do cliente para o servidor.
//file: server.c (fragment)
#include uc_server.c
#define PIPE_TRANSFER_SIZE 100 /* Transfer 100 pipe elements at one time */
void InPipe(LONG_PIPE long_pipe )
{
long local_pipe_buf[PIPE_TRANSFER_SIZE];
ulong actual_transfer_count = PIPE_TRANSFER_SIZE;
while(actual_transfer_count > 0) /* Loop to get all
the pipe data elements */
{
long_pipe.pull( long_pipe.state,
local_pipe_buf,
PIPE_TRANSFER_SIZE,
&actual_transfer_count);
/* process the elements */
} // end while
} //end InPipe