src/network.c

changeset 92
84e0dec5db16
parent 87
d4d67105d4e1
child 93
9b64437262a2
equal deleted inserted replaced
91:c7b586c0ee36 92:84e0dec5db16
29 29
30 #include <stdlib.h> 30 #include <stdlib.h>
31 #include <string.h> 31 #include <string.h>
32 #include "network.h" 32 #include "network.h"
33 33
34 #include <stdio.h>
35
34 #define new_socket() socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); 36 #define new_socket() socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
35 37
36 int net_create(Server *server, char* port) { 38 int net_create(Server *server, short port) {
37 server->info = NULL; 39 server->info = NULL;
38 40
39 struct sockaddr_in addr; 41 struct sockaddr_in addr;
40 addr.sin_family = AF_INET; 42 addr.sin_family = AF_INET;
41 addr.sin_addr.s_addr = INADDR_ANY; 43 addr.sin_addr.s_addr = INADDR_ANY;
42 addr.sin_port = htons(atoi(port)); 44 addr.sin_port = htons(port);
43 45
44 server->fd = new_socket(); 46 server->fd = new_socket();
45 if (server->fd > -1) { 47 if (server->fd > -1) {
46 int one = 1; 48 int one = 1;
47 setsockopt(server->fd, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(int)); 49 setsockopt(server->fd, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(int));
62 hints.ai_protocol = IPPROTO_TCP; 64 hints.ai_protocol = IPPROTO_TCP;
63 65
64 return getaddrinfo(host, port, &hints, info); 66 return getaddrinfo(host, port, &hints, info);
65 } 67 }
66 68
67 int net_find(Server *server, char *host, char* port) { 69 int net_find(Server *server, char *host, short port) {
68 memset(server, 0, sizeof(Server)); 70 memset(server, 0, sizeof(Server));
69 server->fd = -1; 71 server->fd = -1;
70 72 char portstr[6];
71 return getaddrinfo_intrnl(host, port, &(server->info)); 73 sprintf(portstr, "%hd", port);
74 return getaddrinfo_intrnl(host, portstr, &(server->info));
72 } 75 }
73 76
74 int net_listen(Server *server) { 77 int net_listen(Server *server) {
75 listen(server->fd, 1); 78 listen(server->fd, 1);
76 Client* client = malloc(sizeof(Client)); 79 Client* client = malloc(sizeof(Client));

mercurial