/* -*- mode:c; c-file-style:"k&r"; c-basic-offset: 4; tab-width:4; indent-tabs-mode:nil; mode:auto-fill; fill-column:78; -*- */ /* vim: set ts=4 sw=4 et tw=78 fo=cqt wm=0: */ #include "pal.h" #include "pal_debug.h" #include "api.h" #define NTRIES 10 int main (int argc, char ** argv) { char addr[40]; int i; if (argc == 1) { unsigned long start = DkSystemTimeQuery(); const char * newargs[3] = { "Udp", "child", NULL }; PAL_HANDLE srv = DkStreamOpen("udp.srv:127.0.0.1:8000", 0, 0, 0, 0); if (!srv) { pal_printf("not able to create server\n"); return -1; } DkStreamGetName(srv, addr, 40); pal_printf("server bound on %s\n", addr); PAL_HANDLE proc = DkProcessCreate("file:Udp", 0, newargs); for (i = 0 ; i < NTRIES ; i++) { char buffer[20]; int bytes = DkStreamRead(srv, 0, 20, buffer, addr, 40); if (!bytes) { pal_printf("not able to receive from client\n"); return -1; } pal_printf("read on server (from %s): %s\n", addr, buffer); } unsigned long end = DkSystemTimeQuery(); pal_printf("wall time = %d\n", end - start); int retval; DkStreamRead(proc, 0, sizeof(int), &retval, NULL, 0); DkStreamDelete(srv, 0); DkObjectClose(srv); } else { PAL_HANDLE cli = DkStreamOpen("udp:127.0.0.1:8000", 0, 0, 0, 0); DkStreamGetName(cli, addr, 40); pal_printf("client connected on %s\n", addr); for (i = 0 ; i < NTRIES ; i++) { int bytes = DkStreamWrite(cli, 0, 12, "Hello World", NULL); if (!bytes) { pal_printf("not able to send to server\n"); return -1; } } DkObjectClose(cli); int retval = 0; DkStreamWrite(pal_control.parent_process, 0, sizeof(int), &retval, NULL); } return 0; }