#include #include #include #include #include #include /* getopt */ #define HOST "192.168.0.1" #define PORT (22) int main(argc, argv) int argc; char *argv[]; { int sockfd; int c; struct linger ling; struct sockaddr_in servaddr; char *host = HOST; unsigned short port = PORT; while ((c = getopt(argc, argv, "h:p:")) != -1) { switch (c) { case 'h': host = (char *)strdup(optarg); break; case 'p': port = atoi(optarg); break; default: break; } } sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) { printf("socket\n"); exit(1); } bzero(&servaddr, sizeof(struct sockaddr_in)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(port); servaddr.sin_addr.s_addr = inet_addr(host); ling.l_onoff = 1; ling.l_linger = 0; if (setsockopt(sockfd, SOL_SOCKET, SO_LINGER, &ling, sizeof(ling)) < 0) { printf("setsockopt\n"); exit(1); } printf("connecting ..\n"); if (connect(sockfd, (struct sockaddr *)&servaddr, sizeof(struct sockaddr_in)) < 0) { printf("connect: %s\n", strerror(errno)); exit(1); } printf("closing ...\n"); close(sockfd); /* send RST */ printf("closed.\n"); exit(0); }