All pastes #147745 Raw Edit

Untitled

public c v1 · immutable
#147745 ·published 2006-08-24 16:41 UTC
rendered paste body
#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <string.h>#include <unistd.h>#include <netdb.h>#define PROMPT "-> "unsigned longresolveInput(addr)const char* addr;{    unsigned long ip;    struct hostent * rhost;    ip = inet_addr(addr);    if(ip != INADDR_NONE)    return ip;    rhost = gethostbyname(addr);    if(!rhost)    return (unsigned long)NULL;    memcpy(&ip, rhost->h_addr, sizeof(unsigned long));    return ip;}intmain(argc,argv)int argc;char *argv[];{    int sockfd;    struct sockaddr_in serv_addr;    if( argc != 3 )    {        printf("Usage : %s ip_addr port\n", argv[0]);        exit(0);    }    printf("Opening socket ...\n");    bzero(&serv_addr, sizeof(serv_addr));    /* initialisation de la structure sockaddr_in */    serv_addr.sin_family        = AF_INET; // IPv4    serv_addr.sin_addr.s_addr   = resolveInput(argv[1]);    serv_addr.sin_port          = htons(atoi(argv[2]));    /* ouverture socket */    if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0)    {        printf("Socket Error\n");        exit(0);    }    /* mise en place de la connexion */    printf("Trying to connect on %s ...\n", argv[1]);    if( connect( sockfd,                 (struct sockaddr*)&serv_addr,                 sizeof(serv_addr))                 < 0)    {        printf("Connexion Error\n");        exit(0);    }    printf("Connected, getting info.\n");    while(1)    {        fd_set rset;        FD_ZERO( &rset );        FD_SET( sockfd, &rset );        FD_SET( STDIN_FILENO, &rset );        if( select ( sockfd + 1, &rset, NULL, NULL, NULL ) == -1 )        {            printf("Select error\n");            exit(0);        }        if( FD_ISSET( sockfd, &rset ) )        {            int octets;            unsigned char tampon[BUFSIZ];            octets = read( sockfd, tampon, sizeof(tampon));            if( octets == 0)            {                close( sockfd );                exit(0);            }            write( STDOUT_FILENO, tampon, octets );        }        if( FD_ISSET( STDIN_FILENO, &rset ) )        {            int octets;            unsigned char tampon[BUFSIZ];            octets = read( STDIN_FILENO, tampon, sizeof(tampon));            if( octets == 0 )            {                close( sockfd );                exit(0);            }            write( sockfd, tampon, octets);        }    }    return 0;}