本文實例講述了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.jsvar 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.jsvar 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程序設計有所幫助。
新聞熱點
疑難解答