libhv教程06 建立乙個簡單的TCP服務端

2021-10-19 07:35:26 字數 2168 閱讀 4591

下文以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 ...