?? showtable.c
字號:
#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <netdb.h> #include <stdlib.h>#include <string.h>#include <unistd.h>#include <firewall.h>#define TRUE 1#define FALSE 0void error(char *msg){ perror(msg); exit(0);}char *readfromSocket (int sockfd, char *buffer, int length) { static int outstanding = 0; static char *pos; char *tmp; while (1) { if (outstanding == 0) { bzero (buffer, length); outstanding = read (sockfd, buffer, BUFFERLENGTH); printf ("Reading %d characters from socket: %s\n", outstanding, buffer); if (outstanding < 0) error("ERROR reading from socket"); pos = buffer; } if (outstanding == 0) { perror ("Reading results failed.\n"); } while ((*buffer != '\0') && (outstanding > 0)) { outstanding--; buffer++; } if (*buffer == '\0') { outstanding--; buffer++; tmp = pos; pos = buffer; return tmp; } } /* NOT REACHED */}void printResult (char command, char *output, char *buffer) { if (buffer[0] != command) { fprintf (stderr, "Expected part %c, got %c", command, buffer[0]); exit (1); } printf (output); printf ("%s\n", &(buffer[1]));}int main(int argc, char *argv[]){ int sockfd, n; struct sockaddr_in serv_addr; struct hostent *server; char * position; char *endptr; int count, tmp, portno; if (argc != 3) { fprintf (stderr, "usage: %s hostname port \n", argv[0]); exit (1); } portno = strtol (argv[2], &endptr, 10); if ((portno == 0 ) || (endptr == NULL) || (*endptr != '\0')) { fprintf (stderr, "%s: invalid port number!\n", argv[0]); exit (1); } char buffer[BUFFERLENGTH]; sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) error("ERROR opening socket"); server = gethostbyname(argv[1]); if (server == NULL) { fprintf(stderr,"ERROR, no such host\n"); exit(0); } bzero((char *) &serv_addr, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; bcopy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr, server->h_length); serv_addr.sin_port = htons(portno); if (connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) < 0) error("ERROR connecting"); /* Now fill the buffer with the arguments */ bzero(buffer,BUFFERLENGTH); position = buffer; /* skip program name */ argc --; argv ++; /* put command in first character */ buffer[0] = SHOW_TABLE; count = BUFFERLENGTH - 2; position = buffer + 1; while (argc) { tmp = strlen (*argv); if (tmp > count) { fprintf (stderr, "Maximal string length exceeded!\n"); exit (1); } position = memcpy (position, *argv, tmp); position += tmp; argc --; argv ++; count = count - tmp; } /* add the final null character */ *position = '\0'; position++; n = write (sockfd, buffer, position - buffer); if (n < 0) error("ERROR writing to socket"); return 0;}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -