Skip to content
/ sock Public

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

sock

An extensible multi-threaded TCP/TLS socket library

...

Installation

sudo make install

Usage

#include <errno.h>

#define SO_SOCK_IMPL
#include <so/sock.h>

#define HOST "0.0.0.0"
#define PORT 23
#define MESSAGE_SIZE 500

sock_err_t on_handle(sock_t *sock, sock_conn_t *conn) {
  char buffer[MESSAGE_SIZE];
  while (!sock->quit) {
    ssize_t read = sock_read(conn, buffer, sizeof(buffer) - 1);
    if (read == 0) {
      break;
    }
    if (read < 0) {
      if (errno == EINTR || errno == EAGAIN || errno == EWOULDBLOCK) {
        continue;
      }
      break;
    }
    buffer[read] = '\0';
    printf("%s", buffer);
    sock_write(conn, buffer, read);
  }
  return SOCK_ERR_OK;
}

int main(void) {
  sock_t *sock = sock_init();
  sock_on_global(sock, on_handle);
  sock_err_t err = sock_bind_listen(sock, HOST, PORT);
  if (err == SOCK_ERR_OK) {
    printf("server is running on %s:%d\n", HOST, PORT);
    pause();
    sock_close(sock);
  }
  else {
    printf("failed to start server on %s:%d\n", HOST, PORT);
  }
  printf("server stopped\n");
  sock_cleanup(sock);
  return 0;
}

About

An extensible multi-threaded TCP/TLS socket library

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages