欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Node.js net模塊功能及事件監(jiān)聽用法分析

 更新時(shí)間:2019年01月05日 10:54:27   作者:章魚仔  
這篇文章主要介紹了Node.js net模塊功能及事件監(jiān)聽用法,結(jié)合實(shí)例形式分析了net模塊功能及事件監(jiān)聽相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了Node.js net模塊功能及事件監(jiān)聽用法。分享給大家供大家參考,具體如下:

net模塊

對比C語言的網(wǎng)絡(luò)編程,Node.js有更加簡便的開發(fā)模式與模塊提供。它就是net模塊
在需要使用的時(shí)候只需要require("net")就可以引入模塊了。

var net = require("net");

服務(wù)端編程

引入模塊的前提下:

1. 創(chuàng)建一個(gè)新的TCP或IPC服務(wù)

var server = net.createServer(function(client_socket) {
  console.log("client coming");
});

2. 創(chuàng)建connections 啟動(dòng)一個(gè) server 監(jiān)聽.

server.listen({
  host:'127.0.0.1',
  port:6080,
  exclusive:true,
});

客戶端編程

引入net模塊。

1. 創(chuàng)建一個(gè)連接即可

//端口要與需要連接的服務(wù)器端口一致
var socket = net.connect({
  port:6080,
  host:'127.0.0.1',
},
function(){
  console.log("connected to server!");
});

效果

事件監(jiān)聽

常用監(jiān)聽事件事件類型 事件觸發(fā)條件
connection 連接成功調(diào)用的事件
error 發(fā)生錯(cuò)誤調(diào)用的事件
close 當(dāng)server關(guān)閉的時(shí)候觸發(fā). 注意,如果有連接存在, 直到所有的連接結(jié)束才會觸發(fā)這個(gè)事件
data 當(dāng)接收到數(shù)據(jù)的時(shí)觸發(fā)該事件。data 參數(shù)是一個(gè) Buffer 或 String。數(shù)據(jù)編碼由 socket.setEncoding() 設(shè)置。注意當(dāng) Socket 發(fā)送 data 事件的時(shí)候,如果沒有監(jiān)聽者數(shù)據(jù)將會丟失。
listening 當(dāng)服務(wù)被綁定后調(diào)用 server.listen().
end 當(dāng) socket 的另一端發(fā)送一個(gè) FIN 包的時(shí)候觸發(fā),從而結(jié)束 socket 的可讀端。

監(jiān)聽事件的API都是使用on()方法。

Demo演示

下面有一個(gè)詳細(xì)的demo可自行嘗試

tcpserver.js

//tcpserver.js
var net = require('net');
var server = net.createServer(function(client_socket) {
  console.log("client coming");
  client_socket.setEncoding("utf8");
  //接收到客戶端發(fā)送的錯(cuò)誤就會調(diào)用
  client_socket.on("error",function(err){
    console.log("error");
  });
  //有接收到客戶端的數(shù)據(jù)調(diào)用的函數(shù)
  //data 默認(rèn)是Hex(二進(jìn)制編碼)格式,如果強(qiáng)制設(shè)置為utf8那么底層會先轉(zhuǎn)換為utf8字符串傳過去
  client_socket.on("data",function(data){
    console.log(data);
  });
  //用戶斷線離開
  client_socket.on("close",function(client_socket){
  console.log("close socket");
  });
});
//編寫代碼指示server監(jiān)聽到某個(gè)端口上
//配置好之后就會監(jiān)聽server 等待客戶端接入
//host==> 地址 port ==>端口 exclusive ==> 獨(dú)占模式
server.listen({
  host:'127.0.0.1',
  port:6080,
  exclusive:true,
});
server.on("connection",function(client_socket){
  console.log("connection");
});
//server.unref();//停止node對server的監(jiān)聽事件
server.on("error",function (error) {
  console.log("error is on server",error);
});
//服務(wù)器關(guān)閉事件
server.on("close",function(client_socket){
  console.log("close server");
});

tcpclient.js

//tcpclient.js
var net = require("net");
//net.socket類
var socket = net.connect({
  port:6080,
  host:'127.0.0.1',
},
function(){
  console.log("connected to server!");
});
//連接成功調(diào)用的事件
socket.on("connect",function(){
  console.log("connect success");
  //已utf-8的方式編碼成二進(jìn)制的數(shù)據(jù)傳輸
  socket.write("Hello World!","utf8");
});
//發(fā)生錯(cuò)誤調(diào)用的事件
socket.on("error",function (err) {
  console.log("error is ",err);
});
//socket 關(guān)閉事件
socket.on("close",function(){
  console.log("close");
});
//對方發(fā)送關(guān)閉數(shù)據(jù)包的事件
socket.on("end",function(){
  console.log("end event");
})
//當(dāng)有數(shù)據(jù)發(fā)送過來的時(shí)候調(diào)用
socket.on("data",function(data){
  console.log(data);
});

希望本文所述對大家nodejs程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • nodejs環(huán)境使用Typeorm連接查詢Oracle數(shù)據(jù)

    nodejs環(huán)境使用Typeorm連接查詢Oracle數(shù)據(jù)

    這篇文章主要介紹了nodejs環(huán)境使用Typeorm連接查詢Oracle數(shù)據(jù),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 使用Node.js實(shí)現(xiàn)一個(gè)多人游戲服務(wù)器引擎

    使用Node.js實(shí)現(xiàn)一個(gè)多人游戲服務(wù)器引擎

    這篇文章主要給大家介紹了關(guān)于如何使用Node.js實(shí)現(xiàn)一個(gè)多人游戲服務(wù)器引擎的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用Node.js具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • 使用node.js半年來總結(jié)的 10 條經(jīng)驗(yàn)

    使用node.js半年來總結(jié)的 10 條經(jīng)驗(yàn)

    從3月初來到帝都某創(chuàng)業(yè)公司的服務(wù)器團(tuán)隊(duì)實(shí)習(xí),到現(xiàn)在已接近半年的時(shí)間。PS: 已轉(zhuǎn)正,服務(wù)器端用的 Node。
    2014-08-08
  • Node.js API詳解之 readline模塊用法詳解

    Node.js API詳解之 readline模塊用法詳解

    這篇文章主要介紹了Node.js API詳解之 readline模塊用法,結(jié)合實(shí)例形式詳細(xì)分析了Node.js API中readline模塊基本函數(shù)、功能、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-05-05
  • Node.js API詳解之 util模塊用法實(shí)例分析

    Node.js API詳解之 util模塊用法實(shí)例分析

    這篇文章主要介紹了Node.js API詳解之 util模塊用法,結(jié)合實(shí)例形式分析了node.js API中util模塊基本功能與相關(guān)函數(shù)使用技巧,需要的朋友可以參考下
    2020-05-05
  • Node輸出日志的正確方法示例

    Node輸出日志的正確方法示例

    這篇文章主要為大家介紹了Node輸出日志的正確方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • 淺談node.js中async異步編程

    淺談node.js中async異步編程

    本文嘗試結(jié)合Marc Fasel的指導(dǎo)思想和筆者的實(shí)踐經(jīng)驗(yàn)來介紹一些NodeJS的異步編程風(fēng)格,希望對NodeJS的初學(xué)者有所啟發(fā)。
    2015-10-10
  • node.js讀取命令行參數(shù)詳解

    node.js讀取命令行參數(shù)詳解

    本文主要講解了node.js如何獲取命令行參數(shù),有需要的朋友可以參考下
    2022-10-10
  • Nodejs 中文分詞常用模塊用法分析

    Nodejs 中文分詞常用模塊用法分析

    這篇文章主要介紹了Nodejs 中文分詞常用模塊用法,結(jié)合具體案例形式分析了node.js常用分詞模塊的基本功能、用法、效率與相關(guān)使用特點(diǎn),需要的朋友可以參考下
    2023-05-05
  • Node.js開發(fā)者必須了解的4個(gè)JS要點(diǎn)

    Node.js開發(fā)者必須了解的4個(gè)JS要點(diǎn)

    這篇文章主要介紹了Node.js開發(fā)者必須了解的4個(gè)JS要點(diǎn),Node.js是一個(gè)面向服務(wù)器的框架,立足于Chrome強(qiáng)大的V8 JS引擎。盡管它由C++編寫而成,但是它及其應(yīng)用是運(yùn)行在JS上的,需要的朋友可以參考下
    2016-02-02

最新評論