HP Rp3440-4 - 9000 - 0 MB RAM Programmer's Manual page 145

Bsd sockets interface programmer’s guide
Hide thumbs Also See for Rp3440-4 - 9000 - 0 MB RAM:
Table of Contents

Advertisement

/*
* The SIGPIPE signal will be received if the peer has gone away
* and an attempt is made to write data to the peer.
* the signal causes the write operation to receive an EPIPE error.
* Thus, the user is informed about what happened.
*/
signal(SIGPIPE, SIG_IGN);
setbuf(stdout, 0);
setbuf(stderr, 0);
if (argc < 2) {
printf("usage: pitch Kbytes [pid]\n");
exit(0);
}
argv++;
/*
* Set up socket variables (address family; name of server socket)
* (they'll be used later for the connect() call)
*/
sa.sun_family = AF_UNIX;
strncpy(sa.sun_path, SOCKNAME,
(sizeof(struct sockaddr_un) - sizeof(short)));
bullet.bytes = bytes = 1024*atoi(*argv++);
if (argc > 2)
pid = atoi(*argv++);
else
pid = 0;
sendsize = (bytes < BUFSIZE) ? bytes : BUFSIZE;
/*
* Create the client socket
*/
if ((s = socket( AF_UNIX, SOCK_STREAM, 0)) == -1) {
perror("pitch - socket failed");
exit(0);
}
bufsize = BUFSIZE;
/*
* Change the default buffer size to improve throughput for
* large data transfers
*/
if ((setsockopt(s, SOL_SOCKET, SO_SNDBUF, &bufsize,
sizeof(bufsize)))
== -1) {
perror("pitch - setsockopt failed");
exit(0);
}
/*
* Connect to the server
*/
if ((connect(s, &sa, sizeof(struct sockaddr_un))) == - 1) {
perror("pitch - connect failed");
exit(0);
}
/*
* send and receive the bullet to synchronize both sides
*/
send_data(s, &bullet, sizeof(struct bullet));
recv_data(s, &bullet, sizeof(struct bullet));
cc = 0;
if (pid)
kill(pid,SIGUSR1);
Chapter 6
Using UNIX Domain Stream Sockets
Example Using UNIX Domain Stream Sockets
Ignoring
145

Advertisement

Table of Contents
loading

Table of Contents