下文以tcp echo server
為例,使用libhv建立tcp服務端。
#
include
"hv/hloop.h"
void
on_close
(hio_t
* io)
void
on_recv
(hio_t
* io,
void
* buf,
int readbytes)
void
on_accept
(hio_t
* io)
intmain
(int argc,
char
** ar**)
int port =
atoi
(ar**[1]
);// 建立事件迴圈
hloop_t
* loop =
hloop_new(0
);// 建立tcp服務
hio_t
* listenio =
hloop_create_tcp_server
(loop,
"0.0.0.0"
, port, on_accept);if
(listenio ==
null
)// 執行事件迴圈
hloop_run
(loop)
;// 釋放事件迴圈
hloop_free
(&loop)
;return0;
}
編譯執行:
$ cc examples/tcp_echo_server.c -o bin/tcp_echo_server -i/usr/local/include/hv -lhv
$ bin/tcp_echo_server 1234
類unix系統可使用nc作為客戶端測試:
$ nc
127.0.0.1 1234
< hello
> hello
windows端可使用telnet作為客戶端測試:
$ telent 127.0.0.1 1234
**示例參考evpp/tcpserver_test.cpp
#
include
"hv/tcpserver.h"
using
namespace hv;
intmain
(int argc,
char
* ar**)
int port =
atoi
(ar**[1]
);tcpserver srv;
int listenfd = srv.
createsocket
(port);if
(listenfd <0)
printf
("server listen on port %d, listenfd=%d ...\n"
, port, listenfd)
; srv.onconnection =
(const socketchannelptr& channel)
else};
srv.onmessage =
(const socketchannelptr& channel, buffer* buf)
; srv.onwritecomplete =
(const socketchannelptr& channel, buffer* buf)
; srv.
setthreadnum(4
);srv.
start()
;while(1
)sleep(1
);return0;
}
編譯執行:
$ c++ -std=c++11 evpp/tcpserver_test.cpp -o bin/tcpserver_test -i/usr/local/include/hv -lhv
$ bin/tcpserver_test 5678
tcpserver
更多實用介面 libhv教程10 建立乙個簡單的HTTP服務端
http協議作為本世紀最通用的應用層協議,本文就不加以介紹了,不熟悉的自行閱讀awesome http 示例 參考examples http server test.cpp 編譯執行 bin http server test測試使用curl或瀏覽器輸入以下url curl v curl v curl...
libhv教程04 編寫乙個完整的命令列程式
首先,乙個完整的命令列程式應該包含哪些功能?看看libhv是如何提供這些功能的,參考示例 見examples hmain test.cpp 編譯執行 c std c 11 examples hmain test.cpp o bin hmain test i usr local include hv ...
乙個PDDL簡單教程
照例mark一下學習收穫 我的理解是,這是乙個strips的模型實現語言 pddl planner plan 對於strips來說,包含的元素有 p predicates f fluents facts i only one initial state g a set of goal states ...