Chapter 11. The COMSTACK Module
Prev |  | Next

## Chapter 11. The COMSTACK Module

## 1. Synopsis (blocking mode)

    COMSTACK stack;
    char *buf = 0;
    int size = 0, length_incoming;
    char *protocol_package;
    int protocol_package_length;
    char server_address_str[] = "myserver.com:2100";
    void *server_address_ip;
    int status;

    stack = cs_create(tcpip_type, 1, PROTO_Z3950);
    if (!stack) {
        perror("cs_create");  /* use perror() here since we have no stack yet */
        exit(1);
    }

    server_address_ip = cs_addrstr (stack, server_address_str);

    status = cs_connect(stack, server_address_ip);
    if (status != 0) {
        cs_perror(stack, "cs_connect");
        exit(1);
    }

    status = cs_put(stack, protocol_package, protocol_package_length);
    if (status) {
        cs_perror(stack, "cs_put");
        exit(1);
    }

    /* Now get a response */

    length_incoming = cs_get(stack, &buf, &size);
    if (!length_incoming) {
        fprintf(stderr, "Connection closed\n");
        exit(1);
    } else if (length_incoming < 0) {
        cs_perror(stack, "cs_get");
        exit(1);
    }

    /* Do stuff with buf here */

    /* clean up */
    cs_close(stack);
    if (buf)
        free(buf);

Prev |  | Next
4. Debugging | Home | 2. Introduction