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(); });