Example #1
0
int main(void) {

    /* Test conversion of string to IPv4 address and back again. */
    struct ipaddr addr;
    int rc = ipaddr_local(&addr, "1.2.3.4", 5555, 0);
    errno_assert(rc == 0);
    int family = ipaddr_family(&addr);
    assert(family == AF_INET);
    const struct sockaddr_in *sin =
        (const struct sockaddr_in*)ipaddr_sockaddr(&addr);
    uint32_t a = *(uint32_t*)(&sin->sin_addr);
    assert(ntohl(a) == 0x01020304);
    assert(ntohs(sin->sin_port) == 5555);
    int port = ipaddr_port(&addr);
    assert(port == 5555);
    char buf[IPADDR_MAXSTRLEN];
    ipaddr_str(&addr, buf);
    assert(strcmp(buf, "1.2.3.4") == 0);

    /* Test conversion of string to IPv6 address and back again. */
    rc = ipaddr_local(&addr, "::1", 5555, 0);
    errno_assert(rc == 0);
    family = ipaddr_family(&addr);
    assert(family == AF_INET6);
    const struct sockaddr_in6 *sin6 =
        (const struct sockaddr_in6*)ipaddr_sockaddr(&addr);
    assert(ntohs(sin6->sin6_port) == 5555);
    port = ipaddr_port(&addr);
    assert(port == 5555);
    ipaddr_str(&addr, buf);
    assert(strcmp(buf, "::1") == 0);

    return 0;
}
Example #2
0
int main(int argc, char *argv[]) {

    int port = 5555;
    if(argc > 1)
        port = atoi(argv[1]);

    struct ipaddr addr;
    int rc = ipaddr_local(&addr, NULL, port, 0);
    assert(rc == 0);
    int ls = tcp_listen(&addr, 10);
    if(ls < 0) {
        perror("Can't open listening socket");
        return 1;
    }

    int b = bundle();
    assert(b >= 0);

    int i;
    for(i = 0; i != 3; i++) {
        int s = tcp_accept(ls, NULL, -1);
        assert(s >= 0);
        s = suffix_attach(s, "\r\n", 2);
        assert(s >= 0);
        rc = bundle_go(b, dialogue(s));
        assert(rc == 0);
    }

    rc = hclose(b);
    assert(rc == 0);
    rc = hclose(ls);
    assert(rc == 0);

    return 0; 
}
Example #3
0
int main(int argc, char *argv[]) {

    int port = 5555;
    if(argc > 1)
        port = atoi(argv[1]);

    struct ipaddr addr;
    int rc = ipaddr_local(&addr, NULL, port, 0);
    assert(rc == 0);
    int ls = tcp_listen(&addr, 10);
    if(ls < 0) {
        perror("Can't open listening socket");
        return 1;
    }

    int ch[2];
    rc = chmake(ch);
    assert(rc == 0);
    int cr = go(statistics(ch[0]));
    assert(cr >= 0);

    int b = bundle();
    assert(b >= 0);

    int i;
    for(i = 0; i != 3; i++) {
        int s = tcp_accept(ls, NULL, -1);
        assert(s >= 0);
        s = suffix_attach(s, "\r\n", 2);
        assert(s >= 0);
        rc = bundle_go(b, dialogue(s, ch[1]));
        assert(rc == 0);
    }

    rc = bundle_wait(b, now() + 10000);
    assert(rc == 0 || (rc < 0 && errno == ETIMEDOUT));

    rc = hclose(b);
    assert(rc == 0);
    rc = hclose(cr);
    assert(rc == 0);
    rc = hclose(ch[0]);
    assert(rc == 0);
    rc = hclose(ch[1]);
    assert(rc == 0);
    rc = hclose(ls);
    assert(rc == 0);

    return 0;
}
Example #4
0
int main() {
    ipaddr addr;
    int rc = ipaddr_local(&addr, NULL, 5555, 0);
    assert(rc == 0);
    int ls = tcp_listen(&addr, 10);
    assert(ls >= 0);
    go(client());
    int as = tcp_accept(ls, NULL, -1);

    int cs = crlf_start(as);
    assert(cs >= 0);
    char buf[16];
    ssize_t sz = mrecv(cs, buf, sizeof(buf), -1);
    assert(sz == 3);
    assert(buf[0] == 'A' && buf[1] == 'B' && buf[2] == 'C');
    rc = msend(cs, "GHI", 3, -1);
    assert(rc == 0);
    sz = mrecv(cs, buf, sizeof(buf), -1);
    assert(sz == 3);
    assert(buf[0] == 'D' && buf[1] == 'E' && buf[2] == 'F');
    int ts = crlf_stop(cs, -1);
    assert(ts >= 0);
    rc = hclose(ts);
    assert(rc == 0);

    int h[2];
    rc = unix_pair(h);
    assert(rc == 0);
    int s0 = crlf_start(h[0]);
    assert(s0 >= 0);
    int s1 = crlf_start(h[1]);
    assert(s1 >= 0);
    rc = msend(s0, "First", 5, -1);
    assert(rc == 0);
    rc = msend(s0, "Second", 6, -1);
    assert(rc == 0);
    rc = msend(s0, "Third", 5, -1);
    assert(rc == 0);
    rc = crlf_done(s0, -1);
    assert(rc == 0);
    sz = mrecv(s1, buf, sizeof(buf), -1);
    assert(sz == 5 && memcmp(buf, "First", 5) == 0);
    sz = mrecv(s1, buf, sizeof(buf), -1);
    assert(sz == 6 && memcmp(buf, "Second", 5) == 0);
    sz = mrecv(s1, buf, sizeof(buf), -1);
    assert(sz == 5 && memcmp(buf, "Third", 5) == 0);
    sz = mrecv(s1, buf, sizeof(buf), -1);
    assert(sz < 0 && errno == EPIPE);
    rc = msend(s1, "Red", 3, -1);
    assert(rc == 0);
    rc = msend(s1, "Blue", 4, -1);
    assert(rc == 0);
    rc = crlf_stop(s1, -1);
    assert(rc == h[1]);
    sz = mrecv(s0, buf, sizeof(buf), -1);
    assert(sz == 3 && memcmp(buf, "Red", 3) == 0);
    sz = mrecv(s0, buf, sizeof(buf), -1);
    assert(sz == 4 && memcmp(buf, "Blue", 4) == 0);
    sz = mrecv(s0, buf, sizeof(buf), -1);
    assert(sz < 0 && errno == EPIPE);
    rc = crlf_stop(s0, -1);
    assert(rc == h[0]);
    rc = hclose(h[1]);
    assert(rc == 0);
    rc = hclose(h[0]);
    assert(rc == 0);

    return 0;
}