From af1b3b7f9b3e669f1c8f5db095d9de1d2ccde256 Mon Sep 17 00:00:00 2001 From: irungentoo Date: Mon, 24 Jun 2013 16:50:43 -0400 Subject: Made small application to test the DHT. Core DHT: finished some more functions. --- testing/DHT_test.c | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 72 insertions(+), 3 deletions(-) (limited to 'testing') diff --git a/testing/DHT_test.c b/testing/DHT_test.c index 8c5d2cac..a7c61e7f 100644 --- a/testing/DHT_test.c +++ b/testing/DHT_test.c @@ -2,16 +2,85 @@ * A file with a main that runs our DHT for testing. * * Compile with: gcc -Wall -o test ../core/DHT.c DHT_test.c + * + * Command line arguments are the ip and port of a node + * EX: ./test 127.0.0.1 33445 */ #include "../core/DHT.h" -#define PORT 45344 +//Sleep function (x = milliseconds) +#ifdef WIN32 + +#define c_sleep(x) Sleep(1*x) + +#else +#include +#define c_sleep(x) usleep(1000*x) + +#endif + +#define PORT 33445 -int main() + + +int main(int argc, char *argv[]) { + if (argc < 3) { + printf("usage %s ip port\n", argv[0]); + exit(0); + } + + //initialize our socket + sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); + //Set socket nonblocking + #ifdef WIN32 + //I think this works for windows + ioctl(sock, FIONBIO, &mode); + #else + fcntl(sock, F_SETFL, O_NONBLOCK, 1); + #endif + + //Bind our socket to port PORT and address 0.0.0.0 + ADDR addr = {.family = AF_INET, .ip.i = 0, .port = htons(PORT)}; + bind(sock, (struct sockaddr*)&addr, sizeof(addr)); + + IP_Port bootstrap_ip_port; + bootstrap_ip_port.port = htons(atoi(argv[2])); + //bootstrap_ip_port.ip.c[0] = 127; + //bootstrap_ip_port.ip.c[1] = 0; + //bootstrap_ip_port.ip.c[2] = 0; + //bootstrap_ip_port.ip.c[3] = 1; + bootstrap_ip_port.ip.i = inet_addr(argv[1]); + bootstrap(bootstrap_ip_port); + IP_Port ip_port; + char data[MAX_UDP_PACKET_SIZE]; + uint32_t length; + uint32_t i; - return 0; + while(1) + { + + doDHT(); + + if(recievepacket(&ip_port, data, &length) != -1) + { + if(DHT_recvpacket(data, length, ip_port)) + { + printf("UNHANDLED PACKET RECEIVED\nLENGTH:%u\nCONTENTS:\n", length); + printf("--------------------BEGIN-----------------------------\n"); + for(i = 0; i < length; i++) + printf("%c",data[i]); + printf("\n--------------------END-----------------------------\n\n\n"); + } + else + { + printf("Received handled packet with length: %u\n", length); + } + } + c_sleep(100); + } + return 0; } \ No newline at end of file -- cgit v1.2.3