樽中酒不空
分类: c/c
2014-05-27 14:14:09
2015-02-06 11:09:19
我觉得这里不对,shutdown是一个方向的关闭,文档上已经说了,对方主动断开我当然也只用shutdown和uv_read_stop
sxcong2014-06-13 14:39:44
:我觉得该关闭连接的地方都应该用
int r = uv_shutdown(req, stream, callback);
if (r) {
free(req);
uv_close(handle, callback);
}
然后在uv_shutdown的callback中再调用uv_close;
理论上应该这样,一般主动断开socket时uv_shutdown没问题。
不过在对方先断开socket时,本地执行uv_shutdown会异常,跟踪代码能发现:
src\unix\stream.c:
int uv_shutdown(uv_shutdown_t* req, uv_stream_t* stream, uv_shutdown_cb cb) {
assert((stream->type == uv_tcp || stream->type == uv_named_pipe) &&
"uv_shutdown (unix) only supports uv_handle_t right now");
if (!(stream->flags & uv_stre
2014-06-13 11:20:58
我觉得该关闭连接的地方都应该用
int r = uv_shutdown(req, stream, callback);
if (r) {
free(req);
uv_close(handle, callback);
}
然后在uv_shutdown的callback中再调用uv_close;
2014-05-29 19:29:16
学习了