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