diff -r e5fbb8f9edbe -r 0a08f79c320d src/network.c --- a/src/network.c Wed Feb 05 14:07:43 2014 +0100 +++ b/src/network.c Sun Feb 23 21:03:35 2014 +0100 @@ -31,14 +31,21 @@ #include #include "network.h" -int server_bind(Server *server) { - server->fd = socket(server->info->ai_family, - server->info->ai_socktype, server->info->ai_protocol); +#define new_socket() socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + +int net_create(Server *server, char* port) { + server->info = NULL; + + struct sockaddr_in addr; + addr.sin_family = AF_INET; + addr.sin_addr.s_addr = INADDR_ANY; + addr.sin_port = htons(atoi(port)); + + server->fd = new_socket(); if (server->fd > -1) { int true = 1; setsockopt(server->fd, SOL_SOCKET, SO_REUSEADDR, &true, sizeof(int)); - if (bind(server->fd, - server->info->ai_addr, server->info->ai_addrlen)) { + if (bind(server->fd, (struct sockaddr*)&addr, sizeof(addr))) { server->fd = -1; return 1; } else { @@ -49,10 +56,6 @@ } } -int net_create(Server *server, char* port) { - return net_find(server, "localhost", port) || server_bind(server); -} - int getaddrinfo_intrnl(char *host, char *port, struct addrinfo **info) { struct addrinfo hints; memset(&hints, 0, sizeof(hints)); @@ -82,21 +85,17 @@ } int net_connect(Server *server) { - struct addrinfo *info; - if (getaddrinfo_intrnl("localhost", NULL, &info)) { + + Client* client = calloc(1, sizeof(Client)); + client->fd = -1; + server->fd = new_socket(); + server->client = client; + + if (server->fd == -1) { return 1; } - Client* client = calloc(1, sizeof(Client)); - client->fd = socket(info->ai_family, info->ai_socktype, info->ai_protocol); - server->client = client; - - freeaddrinfo(info); - if (client->fd == -1) { - return 1; - } - - return connect(client->fd, server->info->ai_addr, server->info->ai_addrlen); + return connect(server->fd, server->info->ai_addr, server->info->ai_addrlen); } int net_destroy(Server *server) { @@ -113,3 +112,19 @@ return EXIT_SUCCESS; } + +void net_send(int socket, uint32_t code, void *data, size_t len) { + code = htonl(code); + send(socket, &code, sizeof(uint32_t), 0); + send(socket, data, len, 0); +} + +int net_recieve_code(int socket) { + uint32_t code; + recv(socket, &code, sizeof(uint32_t), 0); + return ntohl(code); +} + +void net_recieve_data(int socket, void *data, size_t len) { + recv(socket, data, len, 0); +}