11 #include <netinet/in.h>
12 #include <sys/queue.h>
15 #define DATA_SIZE 4096
101 const void *data,
int size);
147 uint16_t packet_type,
148 const void *payload_data
int client(int ac, char **av)
main function for the client is only used by main (is returned by the main function)
Definition: client.c:176
uint16_t type
Definition: logger.h:152
p_payload_t * p_client_listen(p_client_t *client)
Listen for incoming packets on the client.
Definition: p_client_listen.c:47
p_payload_t * p_server_listen(p_server_t *server)
Listen for incoming packets on the server.
Definition: p_server_listen.c:52
p_client_t * p_client_create(const char *ip, int port)
Create a client with given IP and port.
Definition: p_client_create.c:41
void p_client_close(p_client_t *client)
Close the client.
Definition: p_client_close.c:13
struct p_client_s p_client_t
void p_server_close(p_server_t *server)
Close the server.
Definition: p_server_close.c:13
bool p_client_send_packet(const p_client_t *client, uint16_t type, const void *data, int size)
Send a packet from the client.
Definition: p_client_send_packet.c:13
bool p_server_send_packet(const p_packet_t *packet, int client_fd, p_server_t *server)
Send a packet from the server to a specific client.
Definition: p_server_send_packet.c:12
p_client_t * get_client(int fd, const p_server_t *server)
Get the client with the given file descriptor.
Definition: get_client.c:12
bool server_setsockopt(p_server_t *server)
Set socket options for the server.
Definition: server_setsockopt.c:13
p_payload_t * p_create_payload(uint16_t packet_type, const void *payload_data)
Create a payload with given packet type, data, and size.
struct p_payload_s p_payload_t
bool p_server_is_open(void)
Check if the server is open.
Definition: p_server_create.c:30
p_server_t * server_socket(int port)
Create a socket for the server.
Definition: server_socket.c:12
struct p_server_s p_server_t
bool new_client(p_server_t *server)
Create a new client on the server.
Definition: new_client.c:12
struct p_packet_s p_packet_t
bool p_server_send_packet_type(uint16_t type, int client_fd, p_server_t *server)
Send a packet from the server to a specific client.
Definition: p_server_send_packet.c:25
bool server_listen(p_server_t *server)
Listen for incoming connections on the server.
Definition: server_listen.c:13
struct p_network_data_s p_network_data_t
#define DATA_SIZE
Definition: protocol.h:15
bool select_server(p_server_t *server)
Select the server for incoming packets.
Definition: select_server.c:14
bool server_bind(p_server_t *server)
Bind the server to the given port.
Definition: server_bind.c:13
p_server_t * p_server_create(int port)
Create a server with given port.
Definition: p_server_create.c:35
void server(const char *str_port)
Create a server.
Definition: server.c:56
Represents a client with socket file descriptor and network data.
Definition: protocol.h:51
fd_set writefds
Definition: protocol.h:55
TAILQ_ENTRY(p_client_s) entries
fd_set master_read_fds
Definition: protocol.h:52
fd_set master_write_fds
Definition: protocol.h:53
p_network_data_t network_data
Definition: protocol.h:57
fd_set readfds
Definition: protocol.h:54
TAILQ_HEAD(, p_payload_s) payloads
int sockfd
Definition: protocol.h:56
Represents network data including socket file descriptor and server address.
Definition: protocol.h:22
struct sockaddr_in server_addr
Definition: protocol.h:24
int sockfd
Definition: protocol.h:23
Represents a packet with type and data.
Definition: protocol.h:31
uint8_t data[DATA_SIZE]
Definition: protocol.h:33
uint16_t type
Definition: protocol.h:32
Represents a payload containing packet, network data, and actual data.
Definition: protocol.h:41
TAILQ_ENTRY(p_payload_s) entries
int fd
Definition: protocol.h:43
p_packet_t packet
Definition: protocol.h:42
Represents a server with network data, file descriptor set, and list of clients.
Definition: protocol.h:67
TAILQ_HEAD(, p_payload_s) payloads
fd_set read_fds
Definition: protocol.h:71
p_network_data_t network_data
Definition: protocol.h:68
fd_set master_read_fds
Definition: protocol.h:69
fd_set master_write_fds
Definition: protocol.h:70
TAILQ_HEAD(, p_client_s) clients
fd_set write_fds
Definition: protocol.h:72