1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關咨詢
      選擇下列產品馬上在線溝通
      服務時間:8:30-17:00
      你可能遇到了下面的問題
      關閉右側工具欄

      新聞中心

      這里有您想知道的互聯(lián)網營銷解決方案
      nodejs中net模塊有什么用-創(chuàng)新互聯(lián)

      這篇文章將為大家詳細講解有關nodejs中net模塊有什么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

      創(chuàng)新互聯(lián)建站制作網站網頁找三站合一網站制作公司,專注于網頁設計,成都網站建設、成都做網站,網站設計,企業(yè)網站搭建,網站開發(fā),建網站業(yè)務,680元做網站,已為上千余家服務,創(chuàng)新互聯(lián)建站網站建設將一如既往的為我們的客戶提供最優(yōu)質的網站建設、網絡營銷推廣服務!

      TCP服務在網絡應用中十分常見,目前大多數的應用都是基于TCP搭建而成的。net模塊提供了一個異步網絡包裝器,用于TCP網絡編程,它包含了創(chuàng)建服務器和客戶端的方法。本文將詳細介紹nodeJS中的net模塊。

      IP測試

      【net.isIP(input)】

      測試是否輸入的為 IP 地址。字符串無效時返回 0。 IPV4 情況下返回 4, IPV6情況下返回 6

      var net = require('net');
      console.log(net.isIP('1.1.1.1'));//4
      console.log(net.isIP('1.1'));//0
      console.log(net.isIP('AD80::ABAA:0000:00C2:0002'));//6

      【net.isIPv4(input)】

      如果輸入的地址為 IPV4, 返回 true,否則返回 false

      var net = require('net');
      console.log(net.isIPv4('1.1.1.1'));//true
      console.log(net.isIPv4('1.1'));//false

      【net.isIPv6(input)】

      如果輸入的地址為 IPV6, 返回 true,否則返回 false

      var net = require('net');
      console.log(net.isIPv6('1.1.1.1'));//true
      console.log(net.isIPv6('AD80::ABAA:0000:00C2:0002'));//true

      服務器

      【net.createServer([options][, connectionListener])】

      創(chuàng)建一個 TCP 服務器,參數如下

      options
          allowHalfOpen: false(默認),如果為true,當另一端socket發(fā)送FIN包時socket不會自動發(fā)送FIN包。socket變?yōu)椴豢勺x但可寫(半關閉)
          pauseOnConnect: false(默認),如果為true,當連接到來的時候相關聯(lián)的socket將會暫停。它允許在初始進程不讀取數據情況下,讓連接在進程間傳遞。調用resume()從暫停的socket里讀取數據
      connectionListener 自動給 'connection' 事件創(chuàng)建監(jiān)聽器
      var server = net.createServer(function() {
      
      });

      【server.listen(port[, host][, backlog][, callback])】

      開始接受指定端口port和主機host的連接。如果忽略主機host,服務器將會接受任何IPv4地址(INADDR_ANY)的直接連接。端口為0,則會分配一個隨機端口

      積壓量(Backlog)為連接等待隊列的較大長度。實際長度由操作系統(tǒng)通過sysctl設定,比如linux上的tcp_max_syn_backlog和somaxconn。這個參數默認值是511

      當服務器被綁定時會觸發(fā)'listening'事件。最后一個參數callback將會作為'listening'事件的監(jiān)聽器

      有些用戶會遇到EADDRINUSE錯誤,它表示另外一個服務器已經運行在所請求的端口上。處理這個情況的辦法是等一段時間后再重試

      server.listen(6000);

      【server.close([callback])】

      服務器停止接收新的連接,保持現(xiàn)有連接。當所有連接結束的時候服務器會關閉,并會觸發(fā)'close'事件。你可以傳一個回調函數來監(jiān)聽'close'事件。如果存在,將會調用回調函數,錯誤(如果有)作為參數

      【server.address()】

      操作系統(tǒng)返回綁定的地址、協(xié)議族名和服務器端口。查找哪個端口已經被系統(tǒng)綁定時,非常有用

      [注意]在 'listening' 事件觸發(fā)前,不要調用 server.address()

      server.listen(function() {
          //{ address: '::', family: 'IPv6', port: 53806 }
          console.log(server.address());
      });

      【server.maxConnections】

      設置這個選項后,當服務器連接數超過數量時拒絕新連接

      一旦已經用 child_process.fork() 方法將 socket 發(fā)送給子進程, 就不推薦使用這個選項

      【server.getConnections(callback)】

      異步獲取服務器當前活躍連接的數量。當 socket 發(fā)送給子進程后才有效;

      回調函數有 2 個參數 err 和 count

      server.getConnections(function(err,count){
          console.log(count);//0
      })

      【事件listening】

      當服務器調用 server.listen 綁定后會觸發(fā)

      【事件connection】

      {Socket object} 連接對象

      當新連接創(chuàng)建后會被觸發(fā)。socket 是 net.Socket實例

      【事件close】

      服務器關閉時會觸發(fā)

      [注意]如果存在連接,這個事件不會被觸發(fā)直到所有的連接關閉

      【事件error】

      發(fā)生錯誤時觸發(fā)

      客戶端

      【net.connect(options[, connectionListener])】

      【net.createConnection(options[, connectionListener])】

      connect()的別名是createConnection()方法

      該方法返回一個新的 'net.Socket',并連接到指定的地址和端口。當 socket 建立的時候,將會觸發(fā) 'connect' 事件。和'net.Socket'有相同的方法

      對于 TCP sockets,參數options如下

      port: 客戶端連接到 Port 的端口(必須)
      host: 客戶端要連接到得主機。默認 'localhost'
      localAddress: 網絡連接綁定的本地接口
      localPort: 網絡連接綁定的本地端口
      family : IP 棧版本。默認 4

      對于本地域socket,參數options如下

      path: 客戶端連接到得路徑(必須)
      var client = net.connect({port: 5000}, function() {});

      Socket

      【new net.Socket([options])】

      構造一個新的 socket 對象

      options 對象有以下默認值:

      { fd: null
        allowHalfOpen: false,
        readable: false,
        writable: false
      }

      參數fd允許指定一個存在的文件描述符。將readable和(或)writable設為true,允許在這個socket上讀或寫(僅在參數fd有效時)

      【socket.connect(port[, host][, connectListener])】

      【socket.connect(path[, connectListener])】

      使用傳入的socket打開一個連接。如果指定了端口port和主機host,TCP socket將打開socket。如果忽略參數host,則默認為localhost。如果指定了path,socket將會被指定路徑的unix socket 打開

      參數 connectListener 將會作為監(jiān)聽器添加到 'connect' 事件

      【socket.write(data[, encoding][, callback])】

      在socket上發(fā)送數據。第二個參數指定了字符串的編碼,默認是UTF8編碼

      如果所有數據成功刷新到內核緩沖區(qū),返回true。如果數據全部或部分在用戶內存里,返回false。當緩沖區(qū)為空的時候會觸發(fā)'drain'

      當數據最終被完整寫入的的時候,可選的callback參數會被執(zhí)行,但不一定會馬上執(zhí)行

      【socket.end([data][, encoding])】

      半關閉socket。例如,它發(fā)送一個FIN包。可能服務器仍在發(fā)送數據。

      如果參數data不為空,等同于調用socket.write(data,encoding)后再調用socket.end()

      【socket.destroy()】

      確保沒有 I/O 活動在這個套接字上。只有在錯誤發(fā)生情況下才需要

      【socket.pause()】

      暫停讀取數據。就是說,不會再觸發(fā) data 事件。對于控制上傳非常有用

      【socket.resume()】

      調用 pause() 后想恢復讀取數據

      【socket.setTimeout(timeout[, callback])】

      socket 閑置時間超過 timeout 毫秒后 ,將 socket 設置為超時。觸發(fā)空閑超時事件時,socket 將會收到 'timeout'事件,但是連接不會被斷開。用戶必須手動調用 end() 或 destroy() 這個socket。

      如果 timeout = 0, 那么現(xiàn)有的閑置超時會被禁用。可選的 callback 參數將會被添加成為 'timeout' 事件的一次性監(jiān)聽器

      【socket.setNoDelay([noDelay])】

      禁用納格(Nagle)算法。默認情況下 TCP 連接使用納格算法,在發(fā)送前他們會緩沖數據。將 noDelay 設置為 true 將會在調用 socket.write() 時立即發(fā)送數據。noDelay 默認值為 true

      【socket.setKeepAlive([enable][, initialDelay])】

      禁用/啟用長連接功能,在發(fā)送第一個在閑置socket上的長連接probe之前,可選地設定初始延時。默認false

      設定initialDelay(毫秒),來設定收到的最后一個數據包和第一個長連接probe之間的延時。將 initialDelay 設為0,將會保留默認(或者之前)的值。默認值為0

      【socket.address()】

      操作系統(tǒng)返回綁定的地址,協(xié)議族名和服務器端口。返回的對象有 3 個屬性,比如{ port: 12346, family: 'IPv4', address: '127.0.0.1' }

      【socket.remoteAddress】

      遠程的 IP 地址字符串

      【socket.remoteFamily】

      遠程IP協(xié)議族字符串

      【socket.remotePort】

      遠程端口,數字表示

      【socket.localAddress】

      遠程客戶端正在連接的本地IP地址,字符串表示

      【socket.localPort】

      本地端口地址,數字表示

      【socket.bytesRead】

      接收的字節(jié)數

      【socket.bytesWritten】

      發(fā)送的字節(jié)數

      【事件lookup】

      在解析域名后,但在連接前,觸發(fā)這個事件。對 UNIX sokcet 不適用

      err {Error | Null} 錯誤對象
      address {String} IP 地址。
      family {String | Null} 地址類型

      【事件connect】

      當成功建立 socket 連接時觸發(fā)、

      【事件data】

      {Buffer object}

      當接收到數據時觸發(fā)。參數 data 可以是 Buffer 或 String

      當 Socket 觸發(fā)一個 'data' 事件時,如果沒有監(jiān)聽器,數據將會丟失

      【事件end】

      當 socket 另一端發(fā)送 FIN 包時,觸發(fā)該事件

      【事件timeout】

      當 socket 空閑超時時觸發(fā),僅是表明 socket 已經空閑。用戶必須手動關閉連接

      【事件drain】

      當寫緩存為空得時候觸發(fā)。可用來控制上傳

      【事件error】

      錯誤發(fā)生時觸發(fā)

      【事件close】

      had_error {Boolean} 如果 socket 傳輸錯誤,為 true

      當 socket 完全關閉時觸發(fā)。參數 had_error 是 boolean,它表示是否因為傳輸錯誤導致 socket 關閉

      簡易服務器

      【服務器】

      //server.js
      var net = require('net') ;
      var server = net.createServer(function(socket) { 
          socket.write("Hi!\n");
          socket.on("data", function(data) {
            console.log(data.toString());
          });
          socket.on("end", function() {
            console.log('有客戶機下線了!!!');
          });
          socket.on('error', function() {
            console.log('發(fā)生意外錯誤!!!');
          });
      }) ;
      server.listen(8080) ;

      【客戶機】

      //client.js
      var net = require('net') ;
      var client = net.connect({port: 8080},function(){
          client.name = '客戶機1';
          client.write(client.name + ' 上線了!\n');
          client.end(client.name + ' 下線了!\n');
          client.on("data", function(data) {
              console.log(data.toString());
          });
      });

      nodejs中net模塊有什么用

      簡易聊天室

      【服務器】

      //chatServer.js
      var net = require('net');
      var i = 0;
      //保存客戶機
      var clientList = [];
      var server = net.createServer(function(socket) {
          socket.name = '用戶' + (++i);
          socket.write('【聊天室提示】歡迎' + socket.name + '\n');
          //更新客戶機數組
          clientList.push(socket); 
          function showClients(){
              console.log('【當前在線用戶】:');
              for(var i=0;i

      【客戶機】

      //chatClient.js
      var net = require('net');
      process.stdin.resume();
      process.stdin.setEncoding('utf8');
      var client = net.connect({port: 8080},function(){
          console.log('【本機提示】登錄到聊天室');
          process.stdin.on('data',function(data){
              client.write(data);
          })
          client.on("data", function(data) {
              console.log(data.toString());
          });
          client.on('end', function() {
              console.log('【本機提示】退出聊天室');
              process.exit();
          });
          client.on('error', function() {
              console.log('【本機提示】聊天室異常');
              process.exit();
          });
      });

      nodejs中net模塊有什么用

      關于“nodejs中net模塊有什么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。


      網頁名稱:nodejs中net模塊有什么用-創(chuàng)新互聯(lián)
      當前網址:http://www.ef60e0e.cn/article/gdgsp.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        双流县| 启东市| 泾阳县| 景洪市| 临猗县| 德安县| 张家界市| 沅江市| 巫溪县| 恭城| 新余市| 阿坝| 铁岭县| 新津县| 错那县| 沅江市| 镇宁| 滁州市| 炎陵县| 皋兰县| 格尔木市| 封丘县| 郓城县| 云梦县| 嘉善县| 闸北区| 怀来县| 乌拉特后旗| 弋阳县| 阿拉善右旗| 罗城| 杂多县| 含山县| 增城市| 安龙县| 阿勒泰市| 安徽省| 柘荣县| 吴江市| 扎赉特旗| 青岛市|