Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Aby rozpocząć wysyłanie danych do serwera, klient wywołuje jedną z procedur zdalnych serwera. Ta procedura musi wielokrotnie wywoływać procedurę ściągania w wycinku serwera. Kompilator MIDL używa pliku IDL aplikacji do automatycznego generowania procedury ściągania serwera.
Za każdym razem, gdy program serwera wywołuje procedurę ściągania w wycinku, procedura ściągania odbiera bloki danych od klienta. Dane są odłączane od buforu serwera. Procedura zdalna serwera może następnie przetwarzać te dane w dowolny sposób. Pętla będzie kontynuowana, dopóki serwer nie otrzyma buforu o zerowej długości.
Poniższy przykład pochodzi z programu Pipedemo zawartego w przykładach, które są dostarczane z zestawem Platform Software Development Kit (SDK). Ilustruje to procedurę serwera zdalnego, która używa potoku do ściągania danych z klienta do serwera.
//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