TCP/IP Programming Manual

#endif
printf("Number of chars from recv[from] is %d\n",
status);
}
printf("\nExecute GETPEERNAME fails if CONNECTIONLESS socket\n");
optlen = sizeof(him);
if (getpeername(channel,(struct sockaddr *)&him,&optlen) < 0)
perror("getpeername");
else
printf(" His socket: family=%d port=%d addr=%lx\n",
him.sin_family,him.sin_port,him.sin_addr.s_addr);
printf("\n Data from net: %s\n", buffer);
printf("\nExecute SOCKET_IOCTL to determine chars on re queue\n") ;
ncc = 0;
if (socket_ioctl (channel, FIONREAD, (char *)&ncc) < 0)
perror ("socket_ioctl(FIONREAD)");
else
printf(" Socket_ioctl(FIONREAD) returns %d chars\n", ncc);
}
}
/*
* Close socket
*/
printf("\nExecute SHUTDOWN to close socket\n");
if (shutdown(channel,2) < 0)
perror("shutdown");
}
UDP Server Program
The following programming example shows how to use the socket routines in a server application:
#pragma nolist
#include <$system.ztcpip.param.h>
#include <$system.ztcpip.socket.h>
#include <$system.ztcpip.in.h>
#include <$system.ztcpip.netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <string.h>
#include <cextdecs(DELAY)>
#pragma list
#define PORT_ECHO 1987
int chan;
struct sockaddr_in sin, remote;
int len;
char buf[10*1024];
main ()
{
int status;
int optval, optlen;
/*
* Set your local address
*/
sin.sin_port = htons(PORT_ECHO); /* Interchange bytes of PORT */
sin.sin_addr.s_addr = INADDR_ANY;
sin.sin_family = AF_INET;
/*
* Create a socket
*/
Programs Using AF_INET Sockets 223