Ejemplo n.º 1
0
Archivo: main.c Proyecto: cz-it/magnode
int main(int argc, const char * argv[]) {
    mn_node *node = mn_new();
    mn_init(node);
    mn_connect(node, "tcp://127.0.0.1:8083", 50000);
    char *hello= "hello";
    mn_send(node, hello, strlen(hello), 50000);
    char recvbuf[1024] = {0};
    size_t len = 1024;
    mn_recv(node, recvbuf, &len, 5000);
    printf("len is %zu , buf is %s \n", len, recvbuf);
    
    mn_close(node);
    printf("Hello, World!\n");
    return 0;
}
Ejemplo n.º 2
0
int
main(int argc, char **argv) {
  char *prog_name, *p;
  int fd, err;
  int arg_index, val;
  char    buff[256];
  struct sockaddr_am *am_l,         *am_r;
  struct sockaddr_am  am_local_addr, am_remote_addr;
  uint8_t pkt[1024], *b;
  socklen_t slen;
  am_hdr_t *amh;

  uint8_t  encap;
  uint16_t dest, src;
  uint8_t  len;
  uint8_t  grp;
  uint8_t  type;

  prog_name = basename(argv[0]);

  /* must specifiy enough for the header at a minimum */
  if (argc < 7)
    usage(prog_name);

  /* see if a connection string was specified, presence of ':' indicates */
  p = strchr(argv[1], ':');
  if (p) {
    p = argv[1];
    arg_index = 2;
  } else {
    p = NULL;
    arg_index = 1;
  }

  mn_debug_set(1);
  if (mn_parse_motecom(&mcs_conn, p)) {
    fprintf(stderr, "\nCmd Line/MOTECOM connection string didn't parse\n");
    fprintf(stderr, "Command line: \"%s\"\n", p);
    p = getenv("MOTECOM");
    fprintf(stderr, "MOTECOM: \"%s\"\n\n", (p ? p : "not found"));
    usage(prog_name);
  }

  fprintf(stderr, "Connecting: %s\n", mn_mcs2str(&mcs_conn, buff, 256));

  memset(pkt, 0, sizeof(pkt));

  amh = (am_hdr_t *) &pkt[0];
  encap = strtol(argv[arg_index++], &p, 16);
  dest  = strtol(argv[arg_index++], &p, 16);
  src   = strtol(argv[arg_index++], &p, 16);
  len   = strtol(argv[arg_index++], &p, 16);
  grp   = strtol(argv[arg_index++], &p, 16);
  type  = strtol(argv[arg_index++], &p, 16);

  amh->am_encap = encap;
  amh->am_dest  = htons(dest);
  amh->am_src   = htons(src);
  amh->am_len   = len;
  amh->am_grp   = grp;
  amh->am_type  = type;

  am_l = &am_local_addr;
  am_l->sam_family = AF_AM;
  am_l->sam_addr   = htons(src);
  am_l->sam_grp    = AM_GRP_ANY;
  am_l->sam_type   = type;

  am_r = &am_remote_addr;
  am_r->sam_family = AF_AM;
  am_r->sam_addr   = htons(dest);
  am_r->sam_grp    = AM_GRP_ANY;
  am_r->sam_type   = type;

  b = &pkt[AM_HDR_LEN];

  while (arg_index < argc) {
    val = strtol(argv[arg_index++], NULL, 16);
    *(b++) = val & 0xff;
  }

  len = b - &pkt[0];

  /* use sock_raw because we are sending the AM header too */
  fd = mn_socket(&mcs_conn, AF_AM, SOCK_RAW, 0);
  if (fd < 0) {
    fprintf(stderr, "%s: mn_socket: %s (%d)\n", prog_name, strerror(errno), errno);
    exit(1);
  }

  /* set local side address */
  err = mn_bind(fd, (SA *) am_l, sizeof(am_local_addr));
  if (err) {
    fprintf(stderr, "%s: mn_bind: %s (%d)\n", prog_name, strerror(errno), errno);
    exit(1);
  }

  /* set remote address */
  err = mn_connect(fd, (SA *) am_r, sizeof(am_remote_addr));
  if (err) {
    fprintf(stderr, "%s: mn_connect: %s (%d)\n", prog_name, strerror(errno), errno);
    exit(1);
  }

  slen = sizeof(*am_r);
  val = mn_sendto(fd, &pkt, len, 0, (SA *) am_r, slen);
  if (val < 0) {
    fprintf(stderr, "%s: mn_sendto: %s (%d)\n", prog_name, strerror(errno), errno);
    exit(1);
  }

  /*
   * we turned on debugging so the lower layer will display the packet that
   * was sent.
   */

  exit(0);
}