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);
}