TCP/IP Programming Manual
nbytes = bsize;
/* lets open the process */
printf ("CLIENT: Data is sent with TCPIP process %s \n",procname);
(void) socket_set_inet_name (procname);
/* lets open the socket */
if ((fd = socket (AF_INET, SOCK_STREAM, 0)) < 0) {
perror ("CLIENT: socket");
exit(0);
}
printf ("CLIENT: Socket # %d opened ... \n", fd);
sin.sin_family = AF_INET;
sin.sin_port = (unsigned short)port;
if (connect (fd,(struct sockaddr *)&sin, (int)(sizeof (sin))) < 0) {
/* printf ("CLIENT: errno is %s \n",errno); */
perror ("CLIENT: connect");
exit(0);
}
printf ("CLIENT: Connected ...\n");
while (nbufs-- > 0) {
int sent, tosend;
sent = 0;
rdstat = (read(fo,buf,nbytes));
printf ("CLIENT: Bytes read from file %d \n",rdstat);
tosend = rdstat;
if (rdstat > 0) {
retry:
if ((sent=send (fd, (buf + sent), tosend, 0)) < 0) {
perror ("CLIENT: send");
exit(0);
}
printf ("CLIENT: sent %d bytes\n",sent);
if (sent < tosend) {
tosend -= sent;
printf ("CLIENT: sending more data ...\n");
goto retry;
}
} else nbufs=0;
} /* while */
printf ("CLIENT: Send completed.\n");
FILE_CLOSE_((short int)fo);
exit(0);
usage:
fprintf (stderr, "usage:CLIENT send_file host port# proc_name");
fprintf (stderr, " nbufs bufsize \n");
exit(0);
}
C TCP Server Program
The following server program receives data from the previous client program. To run this server
with default port 25, you must be logged on as a SUPER user.
To compile the program in native mode, run this command:
> nmc/in <input file name>,out <list file name>/<object file
name>;symbols,runnable,extensions,ssv0 "subvolume name",ssv1
"$system.system",ssv2
"$system.zsysdefs",ssv3 "$system.ztcpip"
NOTE: Before running the server program, create a receive file with object code 101.
To run the server program:
Programs Using AF_INET Sockets 217