/************************************************
      Maya Command Port client.

      @author ticless <ticless@wouz.dk>
      usage:  mcp <server_ip> <port>

*************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <arpa/inet.h>
#include <unistd.h>

//Max buffer size
#define BUFFER_SIZE 1024

int main(int argc, char *argv[]){

  struct sockaddr_in addr;
  int client_socket;                    //socket to server
  char buffer[BUFFER_SIZE];             //recv buffer
  int bytes_recv;                       //bytes recv
 
  //Check arguments
  if(argc != 4){
    fprintf(stderr, "usage: %s <server_ip> <port> <command>\n", argv[0]);
    exit(1);
  }

  //Setup ip end point
  addr.sin_addr.s_addr = inet_addr(argv[1]);
  addr.sin_port = htons(atoi(argv[2]));
  addr.sin_family = AF_INET;
 
  //Create client socket as TCP stream
  client_socket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
  if(client_socket == -1){
    perror("socket create");
    exit(1);
  }
  //Try connecting to Maya
  if(connect(client_socket, (struct sockaddr *)&addr, sizeof(struct sockaddr_in)) == -1){
    perror("connect");
    exit(2);
  }
  //Clear buffer
  bzero(buffer, BUFFER_SIZE);

  //Send command to Maya's command port
  write(client_socket, argv[3], strlen(argv[3])+1);

  //Read result from Maya
  if( (bytes_recv = read(client_socket, buffer, BUFFER_SIZE - 1)) > 0 ){
    fprintf(stderr, "%s", buffer);
  }

  //Close connection
  close(client_socket);
  return 0;
}

