#include #include #include #include #include #include #include #define PORT 22 #define HOST "129.94.44.44" void handler(int); int main(int argc, char **argv) { struct sockaddr_in saddr; int ret; int c; int fd; char buf[BUFSIZ]; int val; size_t len; struct sigaction act, oact; char *host = HOST; unsigned short port = PORT; val = 0; len = sizeof(val); while ((c = getopt(argc, argv, "h:p:")) != -1) { switch (c) { case 'h': host = strdup(optarg); break; case 'p': port = atoi(optarg); break; default: break; } } bzero(&act, sizeof(struct sigaction)); bzero(&oact, sizeof(struct sigaction)); act.sa_flags |= SA_RESTART; act.sa_handler = handler; ret = sigaction(SIGALRM, &act, &oact); if (ret < 0) { printf("sigaction\n"); exit(1); } memset(&saddr, 0, sizeof(struct sockaddr_in)); saddr.sin_family = AF_INET; saddr.sin_port = htons(port); saddr.sin_addr.s_addr = inet_addr(host); fd = socket(AF_INET, SOCK_STREAM, 0); if (fd < 0) { printf("socket\n"); exit(1); } alarm(1); errno = 0; ret = connect(fd, (struct sockaddr *)&saddr, sizeof(struct sockaddr)); printf("returned from connect\n"); if (ret < 0) { printf("connect\n"); printf("%s\n", strerror(errno)); } close(fd); return(0); } void handler(int signo) { printf("in signal hander\n"); return ; }