var net = require('net');var client = net.createConnection({port:56200,host:'localhost'});
client.on('connect',function(){
console.log('client connect');
});
client.on('data',function(data){
console.log('client data',toString());
});
client.on('error',function(error){
throw error;
});
client.on('close',function(){
console.log('client close');
});
Socket
socket是啥这里就不做详细的阐述了,下面主要了解下net.Socket这个构造体主要有提供一些什么方法、监听事件的使用。
相关事件
connect : 当客户端与服务端成功建立链接之后触发,如果链接不上服务器直接抛出error事件错误然后退出node进程。
data : 当客户端收到服务器传送过来的数据或者是客户端传送给服务器的数据的时候触发回调。
end : 当另外一侧发送FIN包断开的时候触发,默认情况下面 (
allowHalfOpen == false)socket会自我销毁(如果写入待处理队列里面还没正式响应回包),但是我们可以设置
allowHalfOpen参数为true,这样可以继续往该socket里面写数据,但是我们需要自己去调用 end 方法去消耗这个socket,不然可能会造成句柄泄漏。close : 链接断开的时候触发,但是如果在传输的过程中有错误的话这里会在回调函数里面抛出 error。
timeout : 当socket超时空闲的时候触发,如果要在队列里面销毁需要手动去调close方法。
lookup : 域名解析完成的时候触发。
drain : 写完缓存的时候触发,可使用在上传大小限制中。
相关方法
write() : 服务端给客户端发送数据或者是客户端给服务端发送数据。
address() : 获取服务绑定的socket的IP地址,返回对象有三个属性,分别为端口、host以
及IPvX版本。
end() : 半关闭socket,会发送一个FIN包,服务器仍然可能发送一些数据,也可以这样调用socket.end(data,encoding)。
pause() : 暂停读取数据,可以用作对数据上传限制。
resume() : 继续数据读取。
setEncoding() : 设置数据流的获取格式。
setKeepAlive() : 允许/禁止keep-alive功能。
setNoDelay() : 禁止Nagele算法,TCP链接默认使用Nagle算法,它们在发送之前数据会被缓存。这是为true的话在每次socket.write()的时候会立即发送数据,默认为true。
setTimeout() : 当一个空闲的socket在多少秒后不活跃会被接受到timeout事件,但是该socket不会停止销毁,需要手动调用end()或者destroy()。表示禁止空闲超时。
相关属性
bufferSize : 当前缓存的等待被发送的字符串的数量。
bytesRead : 收到的字节的数量。









