sock-tcp (Socket TCP)

Header: udo/sock-tcp.h

Table of contents (click to go)

Macros

Enums

Unions

Structs

  1. udo_sock_tcp

  2. udo_sock_tcp_server_create_info

  3. udo_sock_tcp_client_create_info

Functions

  1. udo_sock_tcp_server_create()

  2. udo_sock_tcp_server_accept()

  3. udo_sock_tcp_client_create()

  4. udo_sock_tcp_client_connect()

  5. udo_sock_tcp_client_send_data()

  6. udo_sock_tcp_get_fd()

  7. udo_sock_tcp_get_ip_addr()

  8. udo_sock_tcp_get_port()

  9. udo_sock_tcp_destroy()

  10. udo_sock_tcp_get_sizeof()

  11. udo_sock_tcp_recv_data()

  12. udo_sock_tcp_send_data()

API Documentation

udo_sock_tcp (private)

Structure defining UDO Socket TCP context.
struct udo_sock_tcp
struct udo_log_error_struct err;
bool free;
int fd;
char ip_addr[INET6_ADDRSTRLEN];
int port;
struct sockaddr_in6 addr;
err
Stores information about the error that occured
for the given context and may later be retrieved
by caller.
free
If structure allocated with calloc(3) member will be
set to true so that, we know to call free(3) when
destroying the context.
fd
File descriptor to the open TCP socket.
ip_addr
Textual network IP address to connect(2) to or accept(2) with.
port
Network port number to connect(2) to or accept(2) with.
addr
Stores network byte information about the TCP socket context.
Is used for client connect(2) and server accept(2).

udo_sock_tcp_server_create_info

Structure passed to udo_sock_tcp_server_create()
used to define how to create the server.
struct udo_sock_tcp_server_create_info
unsigned char ipv6 : 1;
const char *ip_addr;
int port;
int connections;
ipv6
Boolean to determine if a socket is soley an ipv6
socket or requires an ipv4-mapped-ipv6-address.
ip_addr
Textual network IP addresses to accept(2) with.
port
Network port to accept(2) with.
connections
Amount of connections that may be queued
at a given moment.

udo_sock_tcp_server_create

struct udo_sock_tcp *udo_sock_tcp_server_create(struct udo_sock_tcp *sock, const void *sock_info);
Creates a socket that may be utilized for server socket operations.

Param

Decription

sock

May be NULL or a pointer to a struct udo_sock_tcp.
If NULL memory will be allocated and return to
caller. If not NULL address passed will be used
to store the newly created struct udo_sock_tcp
context.

sock_info

Implementation uses a pointer to a
Returns:
on success: Pointer to a struct udo_sock_tcp
on failure: NULL

udo_sock_tcp_server_accept

int udo_sock_tcp_server_accept(struct udo_sock_tcp *sock, struct sockaddr_in6 *addr);
Accepts client connections and returns the open
file descriptor to the connected client.

Param

Decription

sock

Must pass a pointer to a struct udo_sock_tcp.

addr

May be NULL or a pointer to a struct sockaddr_in6
If not NULL addr is filled in via accept(2) call.
Returns:
on success: Open file descriptor to accepted client
on failure: -1

udo_sock_tcp_client_create_info

Structure passed to udo_sock_tcp_client_create()
used to define how to create the client.
struct udo_sock_tcp_client_create_info
unsigned char ipv6 : 1;
const char *ip_addr;
int port;
ipv6
Boolean to determine if a socket is soley an ipv6
socket or requires an ipv4-mapped-ipv6-address.
ip_addr
Textual network IP addresses to connect(2)/send(2) to.
port
Network port to connect(2)/send(2) to.

udo_sock_tcp_client_create

struct udo_sock_tcp *udo_sock_tcp_client_create(struct udo_sock_tcp *sock, const void *sock_info);
Creates a socket that may be utilized for client socket operations.

Param

Decription

sock

May be NULL or a pointer to a struct udo_sock_tcp.
If NULL memory will be allocated and return to
caller. If not NULL address passed will be used
to store the newly created struct udo_sock_tcp
context.

sock_info

Implementation uses a pointer to a
Returns:
on success: Pointer to a struct udo_sock_tcp
on failure: NULL

udo_sock_tcp_client_connect

int udo_sock_tcp_client_connect(struct udo_sock_tcp *sock);
Connects client socket to address provided via

Param

Decription

sock

Must pass a pointer to a struct udo_sock_tcp.
Returns:
on success: 0
on failure: -1

udo_sock_tcp_client_send_data

ssize_t udo_sock_tcp_client_send_data(struct udo_sock_tcp *sock, const void *data, const size_t size, const void *sock_info);
Send data to client socket address provided via

Param

Decription

sock

Must pass a pointer to a struct udo_sock_tcp.

data

Pointer to buffer to send through socket.

size

Size of data to send through socket.

sock_info

Reserved for future usage. For now used
to set the flag argument of send(2).
Returns:
on success: Amount of bytes sent
on failure: # < 0

udo_sock_tcp_get_fd

int udo_sock_tcp_get_fd(struct udo_sock_tcp *sock);
Acquire socket file descriptor associated with
struct udo_sock_tcp context.

Param

Decription

sock

Must pass a pointer to a struct udo_sock_tcp.
Returns:
on success: TCP socket file descriptor
on failure: -1

udo_sock_tcp_get_ip_addr

const char *udo_sock_tcp_get_ip_addr(struct udo_sock_tcp *sock);
Acquire textual network address in string format
associated with struct udo_sock_tcp context.

Param

Decription

sock

Must pass a pointer to a struct udo_sock_tcp.
Returns:
on success: Textual network address
on failure: NULL

udo_sock_tcp_get_port

int udo_sock_tcp_get_port(struct udo_sock_tcp *sock);
Acquire network port associated with
struct udo_sock_tcp context.

Param

Decription

sock

Must pass a pointer to a struct udo_sock_tcp.
Returns:
on success: Network port connected to context
on failure: -1

udo_sock_tcp_destroy

void udo_sock_tcp_destroy(struct udo_sock_tcp *sock);
Frees any allocated memory and closes FD’s (if open) created after

Param

Decription

sock

Pointer to a valid struct udo_sock_tcp.

udo_sock_tcp_get_sizeof

int udo_sock_tcp_get_sizeof(void);
Returns size of the internal structure. So,
if caller decides to allocate memory outside
of API interface they know the exact amount
of bytes.
Returns:
on success: sizeof(struct udo_sock_tcp)
on failure: sizeof(struct udo_sock_tcp)

udo_sock_tcp_recv_data

ssize_t udo_sock_tcp_recv_data(const int sock_fd, void *data, const size_t size, const void *sock_info);
Receive data from socket file descriptor.

Param

Decription

sock_fd

Socket file descriptor to receive data from.

data

Pointer to buffer to store data received from a socket.

size

Size of data to receive from a socket.

sock_info

Reserved for future usage. For now used
to set the flag argument of recv(2).
Returns:
on success: Amount of bytes received
on failure: # < 0

udo_sock_tcp_send_data

ssize_t udo_sock_tcp_send_data(const int sock_fd, const void *data, const size_t size, const void *sock_info);
Send data to socket file descriptor.

Param

Decription

sock_fd

Socket file descriptor to send data to.

data

Pointer to buffer to send through socket.

size

Size of data to send through socket.

sock_info

Reserved for future usage. For now used
to set the flag argument of send(2).
Returns:
on success: Amount of bytes sent
on failure: # < 0