All pastes #9763 Raw Edit

Someone

public text v1 · immutable
#9763 ·published 2005-04-18 17:53 UTC
rendered paste body

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

void error(char *msg)
{
    perror(msg);
    exit(0);
}
int create_socket(char *host, unsigned int port) {
        int sockfd;
        struct sockaddr_in server_addr;
        struct hostent *server;

        sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
        if(sockfd < 0)
                error("ERROR opening socket");
        server = gethostbyname(host);
        if(server == NULL) {
                fprintf(stderr, "ERROR, no such host\n");
                exit(0);
        }
        bzero((char *) &server_addr, sizeof(server_addr));
        server_addr.sin_family = AF_INET;
        bcopy((char *)server->h_addr, (char *)&server_addr.sin_addr.s_addr, server->h_length);
        server_addr.sin_port = htons(port);
        if (connect(sockfd,(struct sockaddr *)&server_addr,sizeof(server_addr)) < 0)
                error("ERROR connecting");
        
        return sockfd;

        
}

struct amrdata {
        short type;
        short meterid;
        int usuage;
        int peak;
        int timestamp;
        short sequence;
//      char end;
};
int write_to_server(int fd) { 
        short type = 1;
        short meterid = 20;
        int usuage = 20000;
        int peak = 20000;
        int timestamp = 2005;
        short sequence = 1;
        char endline = '\n';
        
        struct amrdata DATA;
        DATA.type = type;
        DATA.meterid = meterid;
        DATA.usuage = usuage;
        DATA.peak = peak;
        DATA.timestamp = timestamp;
        DATA.sequence = sequence;
        //DATA.end = endline;
        
         return write(fd, &DATA, sizeof(DATA));
}
int main(int argc, char *argv[]) {
        int fd;
        int nbytes;

        char buffer[256];

        if(argc < 3) {
                fprintf(stderr, "Usage: %s <hostname> <port>\n", argv[0]);
                exit(0);
        }
        fd = create_socket(argv[1], atoi(argv[2]));
        nbytes = write_to_server(fd);
        printf("Bytes sent: %d\n", nbytes);
}