Libeventのシンプルなネットワークライブラリをカプセル化して、TCP/UDP/UNIXサーバーおよびクライアントの建設を促進します。
インターフェースの例:
int ts_accept_fun(int sfd、int cfd、struct sockaddr *addr、int addrlen)
{
fprintf(stderr、 "[srv]はsrv_fd:%d、cli_fd:%d、addrlen:%d n"、sfd、cfd、addrlen);
0を返します。
}
// PKGは完全なアプリケーションレイヤープロトコルパッケージであり、headCMDは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] sock:%d、pkg:%s、pkg_len:%d、head_cmd:%d n"、靴下、pkg、pkglen、headcmd);
0を返します。
}
int ts_close_fun(int Sock)
{
fprintf(stderr、 "[srv] cli Sock:%d close n"、sock);
0を返します。
}
int ts_timer_fun()
{
fprintf(stderr、 "[srv]タイマーexec、time:%d n"、time(null));
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、port、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);
}
テスト: