All pastes #211611 Raw Edit

Sans titre

public c v1 · immutable
#211611 ·published 2006-10-20 12:06 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;}/*voidfillbuf(void){        char nick[20];        char username[20];        char frt_field[20];        char snd_field[20];        printf("Nick :");        scanf("%s", &nick);        printf("\n");        printf("Username :");        scanf("%s", &username);        printf("\n");        printf("First field :");        scanf("%s", &frt_field);        printf("\n");        printf("Second field :");        scanf("%s", &snd_field);        printf("\n");*/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;}