diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2006-11-30 15:06:46 +0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2006-11-30 15:06:46 +0000 |
commit | 5f0b9de6d837daf43c6ab26d41c829621c3ca727 (patch) | |
tree | affff4ff98d699ddfeb9c7260fde383c9c1a9125 /socket/client.c | |
parent | fe15f991e3a65021442b682f187fcbdad06358a8 (diff) |
* Benchmarking Unix domain sockets.
Diffstat (limited to 'socket/client.c')
-rw-r--r-- | socket/client.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/socket/client.c b/socket/client.c new file mode 100644 index 000000000..a132a7a9e --- /dev/null +++ b/socket/client.c @@ -0,0 +1,43 @@ +#include <assert.h> +#include <stdio.h> +#include <unistd.h> +#include <string.h> +#include <errno.h> + +#include <sys/types.h> +#include <sys/socket.h> +#include <sys/un.h> + + +#define SOCKET_PATH "/tmp/nix-daemon" + + +int main(int argc, char * * argv) +{ + int res; + + int sock = socket(PF_UNIX, SOCK_STREAM, 0); + assert(sock != -1); + + struct sockaddr_un addr; + addr.sun_family = AF_UNIX; + strcpy(addr.sun_path, SOCKET_PATH); + + res = connect(sock, (struct sockaddr *) &addr, sizeof(addr)); + assert(res != -1); + + int i; + for (i = 0; i < 100000; i++) { + int len = send(sock, &i, sizeof(i), 0); + assert(len == sizeof(i)); + + int j; + len = recv(sock, &j, sizeof(j), 0); + if (len < sizeof(j)) break; + assert(i * 2 == j); + } + + close(sock); + + return 0; +} |