IPX/SPX Programming Manual
Sample Programs
HP NonStop IPX/SPX Programming Manual—528022-001
6-6
Sample SAP Programs
close(sock);
exit(0);
} /* End of main() */
#define SAP_BUF_SIZE ((4 * sizeof(zipx_ddl_sapentry_def)) + 4)
nvaddr_t *
find_server(char *pServer, short type)
{
short fnum;
short moreFlag = 1;
short numEntries;
short i;
unsigned long error;
static char buff[SAP_BUF_SIZE];
zipx_ddl_infosap_def *sapinfo = (zipx_ddl_infosap_def *)buff;
zipx_ddl_sapentry_def *pEntry = 0;
NETWARE_SET_NAME(PROCESS_NAME);
if ((fnum = SAP_OPEN(&error, 0, 1, 0)) < 0)
return (nvaddr_t *)NULL;
while (moreFlag) {
if (SAP_INFO(fnum, &error, type, buff, SAP_BUF_SIZE,
moreFlag) < 0) {
return (nvaddr_t *)NULL ;
}
moreFlag = sapinfo->flag;
numEntries = sapinfo->sapcount;
if (numEntries != 0) {
pEntry = &sapinfo->info;
for (i = 0; i < numEntries; i++, pEntry++) {
if (!strcmp(pServer, pEntry->servername)) {
(void)SAP_CLOSE(fnum, &error);
return ((struct nv_addr *)(pEntry->address));
}
} /* end of for loop */
}
} /* end of while loop */
(void)SAP_CLOSE(fnum, &error);
return (nvaddr_t *)NULL;
} /* End of find_server() */
SPXII Server Using SAP
/*
* Sample SPX server program. This example uses
* SAP to advertise its service.
*/
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <socket.h>