摘要:創(chuàng)建客戶端對象與服務(wù)器的參數(shù)屬性一樣此時(shí)端口有下邊的幾個(gè)屬性連接另一端所使用的遠(yuǎn)程地址連接另一端所使用的端口號(hào)本地用于建立連接的地址本地用于建立連接的端口號(hào)端口對象可以被用來寫入向客戶端或服務(wù)器端發(fā)送的流數(shù)據(jù)當(dāng)流數(shù)據(jù)被寫入后將立即發(fā)送到客戶
1. 創(chuàng)建TCP客戶端
const net = require("net"); let socket = new net.Socket([options]);
options對象與TCP服務(wù)器的options參數(shù)屬性一樣
socket.connect(port, [host], [connectListener])
socket.connect(path, [connectListener]);
此時(shí)socket端口有下邊的幾個(gè)屬性
remoteAddress:連接另一端所使用的遠(yuǎn)程地址
remotePort:連接另一端所使用的端口號(hào)
localAddress:本地用于建立連接的地址
localPort:本地用于建立連接的端口號(hào)
socket端口對象可以被用來寫入向客戶端或服務(wù)器端發(fā)送的流數(shù)據(jù),當(dāng)流數(shù)據(jù)被寫入后將立即發(fā)送到客戶端或服務(wù)器.當(dāng)需要寫入流數(shù)據(jù)時(shí),使用socket端口對象的write方法
* `socket.write(data, [encoding], [callback]);`該回調(diào)函數(shù)不需要參數(shù)
在一個(gè)快速的網(wǎng)絡(luò)中,當(dāng)數(shù)據(jù)量較少的時(shí)候,Node.js總是將數(shù)據(jù)直接發(fā)送到操作系統(tǒng)專用于發(fā)送數(shù)據(jù)的TCP緩存區(qū)中,然后從該TCP緩存區(qū)中取出數(shù)據(jù)發(fā)送個(gè)對象.在一個(gè)慢速的網(wǎng)絡(luò)中或者需要發(fā)送大量數(shù)據(jù)的時(shí),TCP客戶端或服務(wù)器所發(fā)送的數(shù)據(jù)并不一定會(huì)立即被對方所接收,在這種情況下,Node.js會(huì)將這些數(shù)據(jù)緩存在緩存隊(duì)列中,在對方可以接收數(shù)據(jù)的情況下降緩存隊(duì)列中的數(shù)據(jù)通過TCP緩存區(qū)發(fā)送給對象.socket端口對象的write方法返回一個(gè)布爾類型值,飯改數(shù)據(jù)直接被發(fā)送到TCP緩存區(qū)中時(shí),該返回值為true,當(dāng)數(shù)據(jù)首先被發(fā)送到緩存隊(duì)列時(shí),該返回值為false.當(dāng)返回值為false且TCP緩存區(qū)中的數(shù)據(jù)已全部發(fā)送出去時(shí),觸發(fā)drain事件.
2. 一個(gè)基本的TCP客戶端// 創(chuàng)建TCP客戶端 const net = require("net"); let client = new net.Socket(); client.setEncoding("utf8"); client.connect("2596", "localhost", function () { console.log("已連接到服務(wù)器"); client.write("hello, this is a tcp server"); setTimeout(function () { client.end("byebye"); }, 10000) }); client.on("data", function (data) { console.log("已接收服務(wù)器端發(fā)送的數(shù)據(jù):" + data); }); client.on("error", function (err) { console.log(err); client.destroy(); });
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/92889.html
摘要:創(chuàng)建服務(wù)器方法返回被創(chuàng)建的服務(wù)器參數(shù)參數(shù)值為一個(gè)對象可以在給兌現(xiàn)各種使用一個(gè)布爾類型的屬性當(dāng)為時(shí)當(dāng)服務(wù)器接收到客戶端發(fā)送的一個(gè)包時(shí)將會(huì)回發(fā)一個(gè)包當(dāng)為時(shí)服務(wù)器接收到客戶端發(fā)送的包時(shí)不回發(fā)包這使得服務(wù)器可以繼續(xù)向客戶端發(fā)送數(shù)據(jù)但是不會(huì)繼續(xù)接收客 1.創(chuàng)建TCP服務(wù)器 let server = net.createServer([options], [connectionListener]...
摘要:然而,在處理流或文件流時(shí),必須要處理二進(jìn)制數(shù)據(jù)。因此,在中,定義了一個(gè)類,該類用來創(chuàng)建一個(gè)專門存放二進(jìn)制數(shù)據(jù)的緩存區(qū)。因?yàn)樵谟?jì)算字符串的長度時(shí),以位子作為一個(gè)單位,而在計(jì)算緩存區(qū)的長度時(shí),以字節(jié)作為一個(gè)單位。 buffer對象 1. 什么是buffer 在客戶端Javascript腳本代碼中,對于二進(jìn)制數(shù)據(jù)沒有提供一個(gè)很好的支持。然而,在處理TCP流或文件流時(shí),必須要處理二進(jìn)制數(shù)據(jù)...
摘要:本文最早為雙十一而作,原標(biāo)題雙大前端工程師讀書清單,以付費(fèi)的形式發(fā)布在上。發(fā)布完本次預(yù)告后,捕捉到了一個(gè)友善的吐槽讀書清單也要收費(fèi)。這本書便從的異步編程講起,幫助我們設(shè)計(jì)快速響應(yīng)的網(wǎng)絡(luò)應(yīng)用,而非簡單的頁面。 本文最早為雙十一而作,原標(biāo)題雙 11 大前端工程師讀書清單,以付費(fèi)的形式發(fā)布在 GitChat 上。發(fā)布之后在讀者圈群聊中和讀者進(jìn)行了深入的交流,現(xiàn)免費(fèi)分享到這里,不足之處歡迎指教...
摘要:本文最早為雙十一而作,原標(biāo)題雙大前端工程師讀書清單,以付費(fèi)的形式發(fā)布在上。發(fā)布完本次預(yù)告后,捕捉到了一個(gè)友善的吐槽讀書清單也要收費(fèi)。這本書便從的異步編程講起,幫助我們設(shè)計(jì)快速響應(yīng)的網(wǎng)絡(luò)應(yīng)用,而非簡單的頁面。 本文最早為雙十一而作,原標(biāo)題雙 11 大前端工程師讀書清單,以付費(fèi)的形式發(fā)布在 GitChat 上。發(fā)布之后在讀者圈群聊中和讀者進(jìn)行了深入的交流,現(xiàn)免費(fèi)分享到這里,不足之處歡迎指教...
閱讀 853·2021-11-18 10:07
閱讀 2365·2021-10-14 09:42
閱讀 5361·2021-09-22 15:45
閱讀 599·2021-09-03 10:29
閱讀 3477·2021-08-31 14:28
閱讀 1885·2019-08-30 15:56
閱讀 3048·2019-08-30 15:54
閱讀 1003·2019-08-29 11:32