您好,登錄后才能下訂單哦!
本文實例講述了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!"); });
效果
事件監聽
常用監聽事件事件類型 | 事件觸發條件 |
---|---|
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程序設計有所幫助。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。