const net = require('net'); let socket = new net.Socket([options]);
options
对象与TCP服务器的options
参数属性同样javascript
socket.connect(port, [host], [connectListener])
socket.connect(path, [connectListener]);
此时socket端口有下边的几个属性java
remoteAddress
:链接另外一端所使用的远程地址remotePort
:链接另外一端所使用的端口号localAddress
:本地用于创建链接的地址localPort
:本地用于创建链接的端口号socket
端口对象能够被用来写入向客户端或服务器端发送的流数据,当流数据被写入后将当即发送到客户端或服务器.当须要写入流数据时,使用socket
端口对象的write
方法缓存
* `socket.write(data, [encoding], [callback]);`该回调函数不须要参数
在一个快速的网络中,当数据量较少的时候,Node.js老是将数据直接发送到操做系统专用于发送数据的TCP缓存区中,而后从该TCP缓存区中取出数据发送个对象.在一个慢速的网络中或者须要发送大量数据的时,TCP客户端或服务器所发送的数据并不必定会当即被对方所接收,在这种状况下,Node.js会将这些数据缓存在缓存队列中,在对方能够接收数据的状况降低缓存队列中的数据经过TCP缓存区发送给对象.socket
端口对象的write
方法返回一个布尔类型值,饭改数据直接被发送到TCP缓存区中时,该返回值为true
,当数据首先被发送到缓存队列时,该返回值为false
.当返回值为false
且TCP缓存区中的数据已所有发送出去时,触发drain
事件.服务器
// 建立TCP客户端 const net = require('net'); let client = new net.Socket(); client.setEncoding('utf8'); client.connect('2596', 'localhost', function () { console.log('已链接到服务器'); client.write('hello, this is a tcp server'); setTimeout(function () { client.end('byebye'); }, 10000) }); client.on('data', function (data) { console.log('已接收服务器端发送的数据:' + data); }); client.on('error', function (err) { console.log(err); client.destroy(); });