ห่อหุ้มไลบรารีเครือข่ายอย่างง่ายบน 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, struct sockaddr *addr, addrlen int ที่ไม่ได้ลงชื่อ, const char *pkg, pkglen int ที่ไม่ได้ลงชื่อ, headcmd int ที่ไม่ได้ลงชื่อ))
-
fprintf (stderr, "[srv] ถุงเท้า: %d, pkg: %s, pkg_len: %d, head_cmd: %d n", ถุงเท้า, pkg, pkglen, headcmd);
กลับ 0;
-
int ts_close_fun (ถุงเท้า int)
-
fprintf (stderr, "[srv] cli sock: %d ปิด n", ถุงเท้า);
กลับ 0;
-
int ts_timer_fun ()
-
fprintf (stderr, "[srv] timer exec, เวลา: %d n", เวลา (null));
กลับ 0;
-
เป็นโมฆะ test_tcp_srv ()
-
const char *ip = "127.0.0.1";
พอร์ต int ที่ไม่ได้ลงนาม = 1235;
ev_srv_init (& evsrv);
int iret = ev_srv_bind_ip (& evsrv, ip, พอร์ต, 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);
-
ทดสอบ: