91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Node.js net模塊功能及事件監聽用法分析

發布時間:2020-08-24 22:15:11 來源:腳本之家 閱讀:167 作者:章魚仔 欄目:web開發

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

net模塊

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

var net = require("net");

服務端編程

引入模塊的前提下:

1. 創建一個新的TCP或IPC服務

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

2. 創建connections 啟動一個 server 監聽.

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

客戶端編程

引入net模塊。

1. 創建一個連接即可

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

效果

Node.js net模塊功能及事件監聽用法分析

事件監聽

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

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

Demo演示

下面有一個詳細的demo可自行嘗試

tcpserver.js

//tcpserver.js
var net = require('net');
var server = net.createServer(function(client_socket) {
  console.log("client coming");
  client_socket.setEncoding("utf8");
  //接收到客戶端發送的錯誤就會調用
  client_socket.on("error",function(err){
    console.log("error");
  });
  //有接收到客戶端的數據調用的函數
  //data 默認是Hex(二進制編碼)格式,如果強制設置為utf8那么底層會先轉換為utf8字符串傳過去
  client_socket.on("data",function(data){
    console.log(data);
  });
  //用戶斷線離開
  client_socket.on("close",function(client_socket){
  console.log("close socket");
  });
});
//編寫代碼指示server監聽到某個端口上
//配置好之后就會監聽server 等待客戶端接入
//host==> 地址 port ==>端口 exclusive ==> 獨占模式
server.listen({
  host:'127.0.0.1',
  port:6080,
  exclusive:true,
});
server.on("connection",function(client_socket){
  console.log("connection");
});
//server.unref();//停止node對server的監聽事件
server.on("error",function (error) {
  console.log("error is on server",error);
});
//服務器關閉事件
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!");
});
//連接成功調用的事件
socket.on("connect",function(){
  console.log("connect success");
  //已utf-8的方式編碼成二進制的數據傳輸
  socket.write("Hello World!","utf8");
});
//發生錯誤調用的事件
socket.on("error",function (err) {
  console.log("error is ",err);
});
//socket 關閉事件
socket.on("close",function(){
  console.log("close");
});
//對方發送關閉數據包的事件
socket.on("end",function(){
  console.log("end event");
})
//當有數據發送過來的時候調用
socket.on("data",function(data){
  console.log(data);
});

希望本文所述對大家nodejs程序設計有所幫助。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巩义市| 宜兰市| 邯郸市| 肥东县| 梅河口市| 开鲁县| 高要市| 建湖县| 宾阳县| 舟山市| 玉田县| 涞水县| 棋牌| 大名县| 隆林| 涟水县| 平罗县| 青阳县| 杭州市| 陆河县| 海淀区| 霞浦县| 江油市| 本溪市| 长顺县| 林西县| 兰溪市| 屏南县| 雷山县| 宁晋县| 杭锦旗| 满城县| 兴安盟| 建湖县| 松江区| 交城县| 清丰县| 余江县| 海城市| 精河县| 浦北县|