| 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)); |