需要执行的接口有两个:
uv_shutdown
uv_close
具体用法见官方源码:test-shutdown-close.c
https://github.com/libuv/libuv/blob/v1.x/test/test-shutdown-close.c#L57
#include "uv.h" #include "task.h" static uv_shutdown_t shutdown_req; static uv_connect_t connect_req; static int connect_cb_called = 0; static int shutdown_cb_called = 0; static int close_cb_called = 0; static void shutdown_cb(uv_shutdown_t* req, int status) { ASSERT(req == &shutdown_req); ASSERT(status == 0 || status == UV_ECANCELED); shutdown_cb_called++; } static void close_cb(uv_handle_t* handle) { close_cb_called++; } static void connect_cb(uv_connect_t* req, int status) { int r; ASSERT(req == &connect_req); ASSERT(status == 0); r = uv_shutdown(&shutdown_req, req->handle, shutdown_cb); ASSERT(r == 0); ASSERT(0 == uv_is_closing((uv_handle_t*) req->handle)); uv_close((uv_handle_t*) req->handle, close_cb); ASSERT(1 == uv_is_closing((uv_handle_t*) req->handle)); connect_cb_called++; } TEST_IMPL(shutdown_close_tcp) { struct sockaddr_in addr; uv_tcp_t h; int r; ASSERT(0 == uv_ip4_addr("127.0.0.1", TEST_PORT, &addr)); r = uv_tcp_init(uv_default_loop(), &h); ASSERT(r == 0); r = uv_tcp_connect(&connect_req, &h, (const struct sockaddr*) &addr, connect_cb); ASSERT(r == 0); r = uv_run(uv_default_loop(), UV_RUN_DEFAULT); ASSERT(r == 0); ASSERT(connect_cb_called == 1); ASSERT(shutdown_cb_called == 1); ASSERT(close_cb_called == 1); MAKE_VALGRIND_HAPPY(); return 0; } TEST_IMPL(shutdown_close_pipe) { uv_pipe_t h; int r; r = uv_pipe_init(uv_default_loop(), &h, 0); ASSERT(r == 0); uv_pipe_connect(&connect_req, &h, TEST_PIPENAME, connect_cb); r = uv_run(uv_default_loop(), UV_RUN_DEFAULT); ASSERT(r == 0); ASSERT(connect_cb_called == 1); ASSERT(shutdown_cb_called == 1); ASSERT(close_cb_called == 1); MAKE_VALGRIND_HAPPY(); return 0; }
相关推荐
libuv_tcp, 使用libuv的tcp服务器和客户端包 欢迎来到libuv_tcp维基 !简介:libuv_tcp是一个包含tcp服务器和客户端的C 类,它使用libuv包。用法:请参阅 [ test_tcpserver.cpp ] 1 和 [ test_tcpclient.cpp
libuv关于TCP UDP以及文件操作的封装测试,便于以后进行扩展使用
基于libuv库的c++实现的tcp通讯,包括客户端和服务器
libuv本身采用大量的回调实现,官方关于server和client的实现较为简单,重新基于libuv进行封装,简化使用。每个client都具备断线重连功能,发送和接收都封装在底层实现;server端同样将发送和接收封装在底层,server...
libuv-httpserver-源码.rar
\r\n )依赖关系它需要最新的稳定版本: , Release v1.0.2 (2014.12.10 发布) , Release v2.3 (2014.5.13 发布)如何确保你在 OS X 上,安装了 Xcode,安装了 。 git clone git@github....
使用libuv,可以非常方便的创建tcp服务端,基本上除了初始化,其他所有的处理都是在回调函数中处理的。可以非常轻松的实现异步读写。其中需要注意的是,uv_read_start的第二个参数,uv_alloc_cb回调函数,在每次接收...
libuv api 说明及用例 英文文档 但是很好理解
基于libuv的轻量级服务器特点利用C++11风格语法封装libuv,提供简洁的服务端接口;利用libuv事件库提供的异步设计,实现Reactor事件处理模式;所有的非阻塞异步接口是C++11的functional/bind形式的回调函数;实现get...
libuv 的文档提供了详细的设计概述、安装指南、API 文档和示例代码等。 libuv 的特点可以总结为: * 跨平台支持,支持多种操作系统和架构。 * 全功能的事件循环,支持多种 I/O polling 机制。 * 异步 TCP 和 UDP ...
模拟IPC,注册接收sip信令消息,模拟发送视频数据,多线程支持多路并发
使用luacpi对libuv进行了简单的封装,能够用脚本建立tcp server、注册timer事件。仅支持linux平台,里面包含了server端和client端,均用lua+libuv开发。上传上来,供以后参考。
“This ‘book’ is a small set of tutorials about using libuv [https://github.com/libuv/libuv] as a high performance evented I/O library which offers the same API on Windows and Unix. It is meant to ...
libuv book 中文文档 An introduction to libuv libuv book 中文文档 An introduction to libuv
libuv源码 libuv-1.x
libuv中文入门学习书籍
编译好的libuv ,包含dll和引入库lib和头文件,头文件精简后只需要包含uv.h即可
libuv is a multi-platform support library with a focus on asynchronous I/O. It was primarily developed for use by [Node.js][], but it's also used by [Luvit](http://luvit.io/), [Julia]...
libuv下载
封装libuv库,可以方便的继承实现自己的功能。便于以后的扩展。