blob: 3fb55c6ad4f2644be4ffec8131c61f3ffbd08ad2 (
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <Server.h>
struct Server server_constructor(int domain, int service, int protocol, ulong interface, int port, int backlog, pthread_t(*launch)(struct Server *server)){
struct Server server;
server.domain=domain;
server.service=service;
server.protocol=protocol;
server.interface=interface;
server.port=port;
server.backlog=backlog;
server.address.sin_family=domain;
server.address.sin_port=htons(port);
server.address.sin_addr.s_addr=htonl(interface);
server.socket = socket(domain,service,protocol);
if(server.socket == 0){
perror("failed to connect to socket...\n");
exit(1);
}
if (bind(server.socket, (struct sockaddr *)&server.address, sizeof(server.address)) < 0){
perror("failed to bind socket...\n");
exit(1);
}
if(listen(server.socket, server.backlog) < 0){
perror("failed to start listening...\n");
exit(1);
}
server.accepted_socket=NULL;
server.launch=launch;
server.running=true;
return server;
};
|