blob: 99e44771ec4e4feae67b064debe8657cf7d32c69 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <assert.h>
#include "socket.h"
int socket_init_in(psocket *psocket, const char *listen_addr, unsigned int listen_port)
{
struct in_addr addr = {0};
assert(psocket);
if (!inet_aton(listen_addr, &addr))
return 1;
psocket->sock.sin_family = AF_INET;
psocket->sock.sin_addr = addr;
psocket->sock.sin_port = htons(listen_port);
psocket->fd = socket(AF_INET, SOCK_STREAM | SOCK_NONBLOCK, 0);
return psocket->fd < 0;
}
int socket_bind_listen(psocket *psocket)
{
assert(psocket);
if (bind(psocket->fd, &psocket->sock, sizeof(psocket->sock)) < 0)
return 1;
return listen(psocket->fd, POTD_BACKLOG) < 0;
}
|