Menerapkan Pipa Input di Server

Untuk mulai mengirim data ke server, klien memanggil salah satu prosedur jarak jauh server. Prosedur ini harus berulang kali memanggil prosedur penarikan di trotoar server. Pengkompilasi MIDL menggunakan file IDL aplikasi untuk secara otomatis menghasilkan prosedur penarikan server.

Setiap kali program server memanggil prosedur penarikan di trotoarnya, prosedur penarikan menerima blok data dari klien. Ini membatalkan nama data ke dalam buffer server. Prosedur jarak jauh server kemudian dapat memproses data ini dengan cara apa pun yang diperlukan. Perulangan berlanjut sampai server menerima buffer dengan panjang nol.

Contoh berikut berasal dari program Pipedemo yang terkandung dalam sampel yang disertakan dengan Platform Software Development Kit (SDK). Ini mengilustrasikan prosedur server jarak jauh yang menggunakan pipa untuk menarik data dari klien ke server.

//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