#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <signal.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main(int argc, char **argv) {
register int sock;
register int bytes;
struct sockaddr_in sa;
char buf[BUFSIZ+1];
pid_t ppid = getppid();
if (argc != 3) {
fprintf(stderr, "Usage: %s address port\n", argv[0]);
return 1;
}
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
perror("socket");
return 1;
}
sa.sin_family = AF_INET;
sa.sin_port = htons(atol(argv[2]));
sa.sin_addr.s_addr = inet_addr(argv[1]);
if (connect(sock, (struct sockaddr *)&sa, sizeof sa) < 0) {
perror("connect");
close(sock);
return 2;
}
while ((bytes = read(sock, buf, BUFSIZ)) > 0) {
if (kill(ppid, 0)) break;
write(1, buf, bytes);
}
close(sock);
return 0;
}
syntax highlighted by Code2HTML, v. 0.9.1