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
int ts_pkg_fun (int sock, struct sockaddr *addr, unsigned int addrlen, const char *pkg, unsigned int pkglen, unsigned int headcmd)
{
fprintf (stderr, "[srv] 양말 : %d, pkg : %s, pkg_len : %d, head_cmd : %d n", 양말, pkg, pkglen, headcmd);
반환 0;
}
int ts_close_fun (int sock)
{
fprintf (stderr, "[SRV] CLI 양말 : %d close n", 양말);
반환 0;
}
int ts_timer_fun ()
{
fprintf (stderr, "[SRV] 타이머 exec, 시간 : %d n", 시간 (null));
반환 0;
}
void test_tcp_srv ()
{
const char *ip = "127.0.0.1";
서명되지 않은 int 포트 = 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);
}
시험: