description | none |
repository URL | https://github.com/rofl0r/rocksock.git |
owner | retnyg@gmx.net |
last change | Fri, 25 Mar 2022 22:47:42 +0000 (25 22:47 +0000) |
last refresh | Mon, 23 Sep 2024 18:39:30 +0000 (23 20:39 +0200) |
mirror URL | git://repo.or.cz/rofl0r-rocksock.git |
https://repo.or.cz/rofl0r-rocksock.git | |
ssh://git@repo.or.cz/rofl0r-rocksock.git | |
bundle info | rofl0r-rocksock.git downloadable bundles |
content tags |
rocksock is a powerful (mostly) blocking networking library written in C. it was designed for small size, robustness, simplicity, static linking and fine-grained error reporting and configurability. programming in a blocking way is much simpler, but can lead to near infinite blocking. rocksock addresses this by providing timeouts so the app doesn't get into a completely blocked state and can react properly on any exceptional condition. making the app fit for SSL only requires enabling one flag, and SOCKS/HTTP proxy support is built-in as well.
build:
for a "default" build, for example for a distribution, just use ./configure && make as usual.
advanced/customized build using RcB:
write your app, include the rocksock header using a relative pathname, and then use the build tool rcb on your main C file, supplying all config options as CFLAGS. rcb will then automatically find all required translation units and throw them at once at the compiler, giving perfect opportunities for link-time optimization.
typical tree structure:
myapp/
rocksock/
lib/ (libulz)
myapp/main.c:
/* tiny program to see if a specific port on a specific host
is open for usage in shellscripts or similar. */
#include "../rocksock/rocksock.h"
#include <stdio.h>
#include <stdlib.h>
static void usage(void) {
dprintf(2, "usage: prog ip port\n");
exit(1);
}
int main(int argc, char** argv) {
if(argc != 3) usage();
rocksock s;
rocksock_init(&s);
rocksock_set_timeout(&s, 5000);
int ret = rocksock_connect(&s, argv[1], atoi(argv[2]), 0);
rocksock_clear(&s);
return ret;
}
$ cd myapp
$ CFLAGS="-DUSE_SSL -flto -O3 -s -static" rcb main.c
2 years ago | master | logtree |
7 years ago | win32 | logtree |