#include #ifdef OSK #include #include #include #include #else #include #include #include #include #endif #include #define SOCKET_PORT 1036 struct sockaddr_in ls_addr; main(argc, argv) int argc; char *argv[]; { char target_node[12]; char command[256]; static char roger[] = "ROGER"; char buffer[256]; int sock, retval; struct hostent *host; int i, nbytes; if (argc > 1){ strcpy(target_node, argv[1]); if (argc > 2){ for ( i = 2, nbytes = 0; i < argc; i++){ sprintf(&command[nbytes],"%s ", argv[i]); nbytes += strlen(argv[i]) + 1; if (nbytes >= ( 256 - 64) ) break; } } else { printf("Please give also a command"); exit(0); } } else{ printf("Please give node\n"); exit(0); } if ((host = gethostbyname(target_node)) == NULL) { fprintf(stderr, "don't know host %s\n", target_node); exit(0); } if ((sock = socket (AF_INET, SOCK_STREAM, 0)) == -1) { fprintf(stderr, "can't open socket\n"); exit(errno); } ls_addr.sin_family = host->h_addrtype; ls_addr.sin_port = htons(SOCKET_PORT); memcpy(&ls_addr.sin_addr.s_addr, host->h_addr, host->h_length); if (connect(sock, &ls_addr, sizeof ls_addr) == -1) { fprintf(stderr, "connect failed\n"); close(sock); exit(errno); } retval = write(sock, command, strlen(command)); if (retval < 0) { fprintf(stderr, "socket write error\n"); close(sock); exit(errno); } /* printf("Successfully send %d characters\n", retval); */ do { retval = read(sock, buffer, sizeof buffer); if (retval < 0) { fprintf(stderr, "socket read error\n"); close(sock); exit(errno); } buffer[retval] = '\0'; printf("%s\n", buffer); retval = write(sock, roger, sizeof roger); if (retval < 0) { fprintf(stderr, "socket write error\n"); close(sock); exit(errno); } } while (strcmp(buffer, "FINE")); close(sock); }