uv_tcp_t --- TCP句柄

TCP句柄用于表示TCP流和服务器。

uv_tcp_tuv_stream_t 的一个 '子类型' 。

数据类型

uv_tcp_t

TCP句柄类型。

公共成员

N/A

参见

uv_stream_t 的成员也适用。

API

int uv_tcp_init(uv_loop_t* loop, uv_tcp_t* handle)

初始化句柄。 迄今为止没有创建套接字。

int uv_tcp_init_ex(uv_loop_t* loop, uv_tcp_t* handle, unsigned int flags)

以指定的标志来初始化句柄。 在此刻只有 flags 参数的低8位用于套接字域。一个套接字将为给定的域创建。 如果指定的域是 AF_UNSPEC 则没有套接字被创建,就像 uv_tcp_init() 一样。

1.7.0 新版功能.

int uv_tcp_open(uv_tcp_t* handle, uv_os_sock_t sock)

打开一个已存在的文件描述符或者套接字作为一个TCP句柄。

在 1.2.1 版更改: 文件描述符设为非阻塞模式。

注解

被传递的文件描述符或套接字没有类型检查,但是需要它代表一个合法的流套接字。

int uv_tcp_nodelay(uv_tcp_t* handle, int enable)

开启 TCP_NODELAY,禁用Nagle算法。

int uv_tcp_keepalive(uv_tcp_t* handle, int enable, unsigned int delay)

开启/禁用TCP keep-alive。 delay 是以秒计的起始延迟,当 enable 是零时被忽略。

int uv_tcp_simultaneous_accepts(uv_tcp_t* handle, int enable)

开启/禁用同时异步的接受请求被操作系统排队当侦听新来的TCP连接时。

这个设置用来调整TCP服务器达到满意的性能。 拥有同时接受能显著地提高接受连接的速率(这就是为什么它默认开启), 但是可能导致在多进程设置下不均衡的负载。

int uv_tcp_bind(uv_tcp_t* handle, const struct sockaddr* addr, unsigned int flags)

绑定句柄到一个地址和端口。 addr 应该指向一个初始化了的 struct sockaddr_in 或者 struct sockaddr_in6

当端口已经被占用时,你会预期见到一个 UV_EADDRINUSE 错误来自于 uv_tcp_bind()uv_listen()uv_tcp_connect() 之一。 那就是说,一个对此函数成功的调用并不保证对 uv_listen()uv_tcp_connect() 的调用也会成功。

flags 能包括 UV_TCP_IPV6ONLY ,在这种情况下禁用双栈支持且只使用IPv6。

int uv_tcp_getsockname(const uv_tcp_t* handle, struct sockaddr* name, int* namelen)

获取句柄当前绑定的地址。 name 必须指向一个合法且足够大的内存块, 推荐使用 struct sockaddr_storage 获得IPv4和IPv6支持。

int uv_tcp_getpeername(const uv_tcp_t* handle, struct sockaddr* name, int* namelen)

连接到句柄的远端的地址。 name 必须指向一个合法且足够大的内存块, 推荐使用 struct sockaddr_storage 获得IPv4和IPv6支持。

int uv_tcp_connect(uv_connect_t* req, uv_tcp_t* handle, const struct sockaddr* addr, uv_connect_cb cb)

建立一个IPv4或IPv6的TCP连接。 提供一个已初始化的TCP句柄和一个未初始化的 uv_connect_taddr 应该指向一个已初始化的 struct sockaddr_instruct sockaddr_in6

在Windows上如果 addr 被初始化指向一个未指定的地址 ( 0.0.0.0 或者 :: ),它将被改变以指向 localhost 。 这么做是为了符合Linux系统的行为。

这个回调函数当连接已建立或当连接发生错误时被调用。

在 1.19.0 版更改: 新增 0.0.0.0::localhost 的映射

参见

uv_stream_t 的API函数也适用。