Node.js學習之路11——建立TCP客戶端

1. 建立TCP客戶端

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事件.服務器

2. 一個基本的TCP客戶端

// 建立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();
});
相關文章
相關標籤/搜索