Skip to content

Instantly share code, notes, and snippets.

@iankit3
Forked from nolim1t/socket.c
Created February 18, 2017 10:38
Show Gist options
  • Save iankit3/bb060bfbdda94fbcadadd6e1c2034cbe to your computer and use it in GitHub Desktop.
Save iankit3/bb060bfbdda94fbcadadd6e1c2034cbe to your computer and use it in GitHub Desktop.

Revisions

  1. Barry Teoh revised this gist Jun 10, 2009. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion socket.c
    Original file line number Diff line number Diff line change
    @@ -19,7 +19,7 @@ int socket_connect(char *host, in_port_t port){
    herror("gethostbyname");
    exit(1);
    }
    copy(hp->h_addr, &addr.sin_addr, hp->h_length);
    bcopy(hp->h_addr, &addr.sin_addr, hp->h_length);
    addr.sin_port = htons(port);
    addr.sin_family = AF_INET;
    sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
  2. Barry Teoh revised this gist Jun 10, 2009. 1 changed file with 42 additions and 41 deletions.
    83 changes: 42 additions & 41 deletions socket.c
    Original file line number Diff line number Diff line change
    @@ -11,54 +11,55 @@
    #include <netdb.h>

    int socket_connect(char *host, in_port_t port){
    struct hostent *hp;
    struct sockaddr_in addr;
    int on = 1, sock;
    struct hostent *hp;
    struct sockaddr_in addr;
    int on = 1, sock;

    if((hp = gethostbyname(host)) == NULL){
    herror("gethostbyname");
    exit(1);
    }
    copy(hp->h_addr, &addr.sin_addr, hp->h_length);
    addr.sin_port = htons(port);
    addr.sin_family = AF_INET;
    sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
    setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (const char *)&on, sizeof(int));
    if(sock == -1){
    perror("setsockopt");
    exit(1);
    }
    if(connect(sock, (struct sockaddr *)&addr, sizeof(struct sockaddr_in)) == -1){
    perror("connect");
    exit(1);
    }
    return sock;
    if((hp = gethostbyname(host)) == NULL){
    herror("gethostbyname");
    exit(1);
    }
    copy(hp->h_addr, &addr.sin_addr, hp->h_length);
    addr.sin_port = htons(port);
    addr.sin_family = AF_INET;
    sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
    setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (const char *)&on, sizeof(int));

    if(sock == -1){
    perror("setsockopt");
    exit(1);
    }

    if(connect(sock, (struct sockaddr *)&addr, sizeof(struct sockaddr_in)) == -1){
    perror("connect");
    exit(1);

    }
    return sock;
    }

    #define BUFFER_SIZE 1024

    int main(int argc, char *argv[]){
    int fd;
    char buffer[BUFFER_SIZE];
    int fd;
    char buffer[BUFFER_SIZE];

    if(argc < 3){
    fprintf(stderr, "Usage: %s <hostname> <port>\n", argv[0]);
    exit(1);
    }
    if(argc < 3){
    fprintf(stderr, "Usage: %s <hostname> <port>\n", argv[0]);
    exit(1);
    }

    fd = socket_connect(argv[1], atoi(argv[2]));

    write(fd, "GET /\r\n", strlen("GET /\r\n")); // write(fd, char[]*, len);

    bzero(buffer, BUFFER_SIZE);

    while(read(fd, buffer, BUFFER_SIZE - 1) != 0){
    fprintf(stderr, "%s", buffer);
    bzero(buffer, BUFFER_SIZE);
    }
    fd = socket_connect(argv[1], atoi(argv[2]));
    write(fd, "GET /\r\n", strlen("GET /\r\n")); // write(fd, char[]*, len);
    bzero(buffer, BUFFER_SIZE);

    while(read(fd, buffer, BUFFER_SIZE - 1) != 0){
    fprintf(stderr, "%s", buffer);
    bzero(buffer, BUFFER_SIZE);
    }

    shutdown(fd, SHUT_RDWR);
    close(fd);
    shutdown(fd, SHUT_RDWR);
    close(fd);

    return 0;
    }
    return 0;
    }
  3. @nolim1t nolim1t created this gist Jun 10, 2009.
    64 changes: 64 additions & 0 deletions socket.c
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,64 @@
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <fcntl.h>

    #include <netinet/tcp.h>
    #include <sys/socket.h>
    #include <sys/types.h>
    #include <netinet/in.h>
    #include <netdb.h>

    int socket_connect(char *host, in_port_t port){
    struct hostent *hp;
    struct sockaddr_in addr;
    int on = 1, sock;

    if((hp = gethostbyname(host)) == NULL){
    herror("gethostbyname");
    exit(1);
    }
    copy(hp->h_addr, &addr.sin_addr, hp->h_length);
    addr.sin_port = htons(port);
    addr.sin_family = AF_INET;
    sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
    setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (const char *)&on, sizeof(int));
    if(sock == -1){
    perror("setsockopt");
    exit(1);
    }
    if(connect(sock, (struct sockaddr *)&addr, sizeof(struct sockaddr_in)) == -1){
    perror("connect");
    exit(1);
    }
    return sock;
    }

    #define BUFFER_SIZE 1024

    int main(int argc, char *argv[]){
    int fd;
    char buffer[BUFFER_SIZE];

    if(argc < 3){
    fprintf(stderr, "Usage: %s <hostname> <port>\n", argv[0]);
    exit(1);
    }

    fd = socket_connect(argv[1], atoi(argv[2]));

    write(fd, "GET /\r\n", strlen("GET /\r\n")); // write(fd, char[]*, len);

    bzero(buffer, BUFFER_SIZE);

    while(read(fd, buffer, BUFFER_SIZE - 1) != 0){
    fprintf(stderr, "%s", buffer);
    bzero(buffer, BUFFER_SIZE);
    }

    shutdown(fd, SHUT_RDWR);
    close(fd);

    return 0;
    }