coroutine void client(const char *requested, const char *expected) {
    ipaddr addr = ipremote("127.0.0.1", 5555, 0, -1);
    wsock s = wsockconnect(addr, requested, "/", -1);
    assert(s);
    assert(wsock_str_eq(wsocksubprotocol(s), expected));
    wsockclose(s);
}
Пример #2
0
coroutine void client2(int port) {
    ipaddr addr = ipremote("127.0.0.1", port, 0, -1);
    sslsock conn = sslconnect(addr, -1);
    assert(conn);
    msleep(now() + 100);
    sslclose(conn);
}
Пример #3
0
coroutine void client(int port) {
    ipaddr addr = ipremote("127.0.0.1", port, 0, -1);
    tcpsock cs = tcpconnect(addr, -1);
    assert(cs);

    char ipstr[16] = {0};
    ipaddrstr(addr, ipstr);
    assert(errno == 0);
    assert(strcmp(ipstr, "127.0.0.1") == 0);

    int fd = tcpdetach(cs);
    assert(fd != -1);
    cs = tcpattach(fd, 0);
    assert(cs);

    msleep(now() + 100);

    char buf[16];
    size_t sz = tcprecv(cs, buf, 3, -1);
    assert(sz == 3 && buf[0] == 'A' && buf[1] == 'B' && buf[2] == 'C');

    sz = tcpsend(cs, "123\n45\n6789", 11, -1);
    assert(sz == 11 && errno == 0);
    tcpflush(cs, -1);
    assert(errno == 0);

    tcpclose(cs);
}
Пример #4
0
void doconnect(void) {
    ipaddr addr = ipremote("127.0.0.1", 5557, 0, -1);
    tcpsock s = tcpmuxconnect(addr, "foo", -1);
    assert(s);
    tcpsend(s, "abc", 3, -1);
    assert(errno == 0);
    tcpflush(s, -1);
    assert(errno == 0);
}
Пример #5
0
int main(int argc, char *argv[])
{
    int opt;
    int clients = 100;
    int messages = 10000;
    int port = 5000;
    const char *host;

    while (-1 != (opt = getopt(argc, argv, "c:h:p:"))) {
        switch (opt) {
        case 'c':
            clients = atoi(optarg);
            break;
        case 'h':
            messages = atoi(optarg);
            break;
        case 'p':
            port = atoi(optarg);
            break;
        default:
            fprintf(stderr, "Unknown option: %c\n", opt);
            return 2;
        }
    }

    if (optind >= argc) {
        fprintf(stderr, "usage: client-libmill [-c clients] [-h messages per client] [-p port] host\n");
        return 2;
    }

    host = argv[optind];

    ipaddr addr = ipremote(host, port, 0, -1);

    chan results = chmake(int, 0);

    int64_t start_time = now();

    for (int i = 0; i < clients; ++i)
        go(client(addr, messages, results));

    int success = 0;

    for (int i = 0; i < clients; ++i)
        success += chr(results, int);

    int64_t elapsed = now() - start_time;

    printf("Throughput: %.2lf [#/sec]\n",
           success * 1000.0 / elapsed);

    return 0;
}
Пример #6
0
Файл: udp.c Проект: nirs/libmill
int main() {
    udpsock s1 = udplisten(iplocal(NULL, 5555, 0));
    udpsock s2 = udplisten(iplocal(NULL, 5556, 0));

    ipaddr addr = ipremote("127.0.0.1", 5556, 0, -1);

    while(1) {
        udpsend(s1, addr, "ABC", 3);
        assert(errno == 0);
        
        char buf[3];
        size_t sz = udprecv(s2, &addr, buf, sizeof(buf), now() + 100);
        if(errno == ETIMEDOUT)
            continue;
        assert(errno == 0);
        assert(sz == 3);
        break;
    }

    while(1) {
        udpsend(s2, addr, "DEF", 3);
        assert(errno == 0);

        char buf[3];
        size_t sz = udprecv(s1, &addr, buf, sizeof(buf), now() + 100);
        if(errno == ETIMEDOUT)
            continue;
        assert(errno == 0);
        assert(sz == 3);
        break;
    }

    udpclose(s2);
    udpclose(s1);
    return 0;
}
coroutine void badclient(const char *requested, int expected) {
    ipaddr addr = ipremote("127.0.0.1", 5555, 0, -1);
    wsock s = wsockconnect(addr, requested, "/", -1);
    assert(!s);
    assert(errno == expected);
}