///
///
///
/**
* @description 网络套接口对象
*
* Socket 属于 net 模块,创建方法
* ```JavaScript
* var s = new net.Socket();
* ```
*
*/
declare class Class_Socket extends Class_Stream {
/**
* @description Socket 构造函数,创建一个新的 Socket 对象
* @param family 指定地址集,缺省为 AF_INET,ipv4
*
*/
constructor(family: number);
/**
* @description 查询当前 Socket 对象的地址集
*/
readonly family: number;
/**
* @description 查询当前连接的对方地址
*/
readonly remoteAddress: string;
/**
* @description 查询当前连接的对方端口
*/
readonly remotePort: number;
/**
* @description 查询当前连接的本地地址
*/
readonly localAddress: string;
/**
* @description 查询当前连接的本地端口
*/
readonly localPort: number;
/**
* @description 查询和设置超时时间 单位毫秒
*/
timeout: number;
/**
* @description 建立一个 tcp 连接
* @param host 指定对方地址或主机名,也可以指向 unix socket 和 Windows pipe 路径
* @param port 指定对方端口,连接 unix socket 和 Windows pipe 时,忽略此参数
*
*/
connect(host: string, port?: number): void;
connect(host: string, port?: number, callback?: (err: Error | undefined | null)=>any): void;
/**
* @description 将当前 Socket 绑定至本地所有地址的指定端口
* @param port 指定绑定的端口
* @param allowIPv4 指定是否接受 ipv4 连接,缺省为 true。本参数在 ipv6 时有效,并依赖于操作系统
*
*/
bind(port: number, allowIPv4?: boolean): void;
/**
* @description 将当前 Socket 绑定至指定地址的指定端口
* @param addr 指定绑定的地址,也可以指向 unix socket 和 Windows pipe 路径
* @param port 指定绑定的端口,绑定 unix socket 和 Windows pipe 时,忽略此参数
* @param allowIPv4 指定是否接受 ipv4 连接,缺省为 true。本参数在 ipv6 时有效,并依赖于操作系统
*
*/
bind(addr: string, port?: number, allowIPv4?: boolean): void;
/**
* @description 开始监听连接请求
* @param backlog 指定请求队列长度,超出的请求将被拒绝,缺省为 120
*
*/
listen(backlog?: number): void;
/**
* @description 等待并接受一个连接
* @return 返回接收到得连接对象
*
*/
accept(): Class_Socket;
accept(callback: (err: Error | undefined | null, retVal: Class_Socket)=>any): void;
/**
* @description 从连接读取指定大小的数据,不同于 read 方法,recv 并不保证读完要求的数据,而是在读取到数据后立即返回
* @param bytes 指定要读取的数据量,缺省读取任意尺寸的数据
* @return 返回从连接读取的数据
*
*/
recv(bytes?: number): Class_Buffer;
recv(bytes?: number, callback?: (err: Error | undefined | null, retVal: Class_Buffer)=>any): void;
/**
* @description 将给定的数据写入连接,此方法等效于 write 方法
* @param data 给定要写入的数据
*
*/
send(data: Class_Buffer): void;
send(data: Class_Buffer, callback: (err: Error | undefined | null)=>any): void;
}