From: root (spook.local) Date: Sun, 27 May 2012 17:10:44 +0000 (+0300) Subject: test:server:create userspace peer for receiving file X-Git-Url: http://p2p-next.cs.pub.ro/gitweb/?a=commitdiff_plain;h=4f43366e09852a0d49c2983897290814ce43a80f;p=p2p-kernel-protocol.git test:server:create userspace peer for receiving file --- diff --git a/test/server/Makefile b/test/server/Makefile new file mode 100644 index 0000000..b52084b --- /dev/null +++ b/test/server/Makefile @@ -0,0 +1,7 @@ +FILE=server + +$(FILE):$(FILE).o + +.PHONY: clean +clean: + -rm -rf $(FILE) $(FILE).o diff --git a/test/server/p2pkp.h b/test/server/p2pkp.h new file mode 100644 index 0000000..f18d258 --- /dev/null +++ b/test/server/p2pkp.h @@ -0,0 +1,7 @@ +#ifndef _P2PKP_H_ +#define _P2PKP_H_ + +#define AF_P2PKP 19 +#define PF_P2PKP AF_P2PKP + +#endif /* _P2PKP_H_ */ diff --git a/test/server/server.c b/test/server/server.c new file mode 100644 index 0000000..9c1e228 --- /dev/null +++ b/test/server/server.c @@ -0,0 +1,60 @@ +#include +#include +#include +#include +#include +#include +#include + +#include "p2pkp.h" + +int main(int argc, char **argv) +{ + int sock, err; + struct sockaddr_in psin; + struct hostent *host; + + if (argc != 4) { + fprintf(stderr, "Usage: %s \n", argv[0]); + return -1; + } + + printf("Opening AF_P2PKP socket\n"); + + sock = socket(AF_P2PKP, SOCK_DGRAM, 0); + printf("Socket returned: %d\n", sock); + + if (sock < 0) { + printf("Cannot create AF_P2PKP socket: %s(%d)\n", + strerror(errno), errno); + return -1; + } + printf("Successfully created AF_P2PKP socket: %d\n", sock); + + argv++; + + host = gethostbyname(argv[0]); + psin.sin_family = AF_INET; + psin.sin_port = htons(atoi(argv[1])); + psin.sin_addr = *((struct in_addr *)host->h_addr); + + if (bind(sock, (struct sockaddr *)&psin, + sizeof(struct sockaddr_in)) == -1) { + printf("Cannot bind to server: %s(%d)\n", strerror(errno), errno); + return -1; + } + argv += 2; + + printf("Bound to: %s:%s\n", argv[0], argv[1]); + + err = read(sock, argv[0], sizeof(argv[0])); + if (err < 0) { + printf("Error while receiving file %s: %s(%d)\n", argv[0], + strerror(errno), errno); + return err; + } + + printf("Successfully read file %s\n", argv[0]); + + return 0; +}