src/network.c

changeset 45
e14a1d9aa91d
parent 34
c4d4b8a8f902
child 46
4dcfb4c58b6d
equal deleted inserted replaced
44:1891d88cbd10 45:e14a1d9aa91d
27 * 27 *
28 */ 28 */
29 29
30 #include <stdlib.h> 30 #include <stdlib.h>
31 #include <string.h> 31 #include <string.h>
32 #include <fcntl.h>
33 #include "network.h" 32 #include "network.h"
34 33
35 #define new_socket() socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); 34 #define new_socket() socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
36 35
37 int net_create(Server *server, char* port) { 36 int net_create(Server *server, char* port) {
130 recv(socket, &code, sizeof(uint8_t), 0); 129 recv(socket, &code, sizeof(uint8_t), 0);
131 return code; 130 return code;
132 } 131 }
133 132
134 void net_recieve_data(int socket, void *data, size_t len) { 133 void net_recieve_data(int socket, void *data, size_t len) {
135 recv(socket, data, len, 0); 134 recv(socket, data, len, MSG_WAITALL);
136 } 135 }
137
138 int net_setnonblocking(int socket, _Bool nonblocking) {
139 int opts = fcntl(socket, F_GETFL);
140 if (opts < 0) {
141 return 1;
142 }
143
144 if (nonblocking) {
145 opts |= O_NONBLOCK;
146 } else {
147 opts &= ~O_NONBLOCK;
148 }
149 if (fcntl(socket, F_SETFL, opts) < 0) {
150 return 1;
151 }
152
153 return 0;
154 }

mercurial