Encapsule una biblioteca de red simple en Libevent para facilitar la construcción de servidores y clientes TCP/UDP/UNIX.
Ejemplo de interfaz:
int ts_accept_fun (int sfd, int cfd, struct sockaddr *addr, int addrlen)
{
fprintf (stderr, "[srv] aceptar srv_fd: %d, cli_fd: %d, addrlen: %d n", sfd, cfd, addrlen);
regresar 0;
}
// PKG es un paquete completo de protocolo de capa de aplicación, el cliente utiliza HeadCMD para indicar el protocolo de desempaquetado PKG
int ts_pkg_fun (int Sock, struct Sockaddr *addr, unsigned int addrlen, const char *pkg, unsigned int pkglen, unsigned int headcmd)
{
fprintf (stderr, "[srv] calcetín: %d, pkg: %s, pkg_len: %d, head_cmd: %d n", sock, pkg, pkglen, headcmd);
regresar 0;
}
int ts_close_fun (int calcetín)
{
fprintf (stderr, "[srv] cli calcetín: %d cierre n", calcetín);
regresar 0;
}
int ts_timer_fun ()
{
fprintf (stderr, "[srv] temporizador exec, tiempo: %d n", tiempo (nulo));
regresar 0;
}
void test_tcp_srv ()
{
const char *ip = "127.0.0.1";
Unsigned Int Port = 1235;
ev_srv_init (& evsrv);
int iret = ev_srv_bind_ip (& evsrv, ip, puerto, ts_accept_fun, ts_pkg_fun, ts_close_fun, 0, -1, 5);
Yg_assert_ret (iret> 0,);
iret = ev_srv_add_timer (& evsrv, ts_timer_fun, 1000 * 3);
Yg_assert_ret (iret> = 0,);
ev_srv_run (& evsrv);
}
prueba: