欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

怎么在Node.js中實現(xiàn)套接字

本篇文章給大家分享的是有關(guān)怎么在Node.js中實現(xiàn)套接字,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),路南企業(yè)網(wǎng)站建設(shè),路南品牌網(wǎng)站建設(shè),網(wǎng)站定制,路南網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,路南網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

server.js:

var net = require("net");
// server is an instance of net.Server
// sock is an instance of net.Socket
var server = net.createServer(function(sock){
 console.log('client connected, address - ', sock.remoteAddress, ' port - ', sock.remotePort);
 sock.setEncoding('utf8');
 sock.on('data', function(data){
  console.log('got data from client - ', data);
  sock.write(data);
 });
 sock.on('end', function(){
  console.log('client disconnected');
 });
 sock.on('error', function(err){
  console.log('socket error - ', err);
 });
});
server.maxConnections = 10;
server.listen(7, function(){
 console.log('echo server bound at port - 7');
});

使用net.createServer來創(chuàng)建一個服務(wù)器實例,這個方法的返回值是一個net.Server實例,net.Server提供了listen方法,讓我們監(jiān)聽到某個端口上來接受客戶端連接,同時還提供了一些屬性,比如maxConnections可以設(shè)置服務(wù)器的并發(fā)連接數(shù)上限(當(dāng)服務(wù)器的連接數(shù)超過這個值時,后續(xù)連接就會被拒掉),還有其它的,看文檔吧:https://nodejs.org/api/net.html#net_class_net_server。

net.Server還提供了一些事件,比如error、connection等。當(dāng)有客戶端連接被接受時,會發(fā)射connection事件,這個事件帶一個net.Socket對象作為參數(shù),可以在回調(diào)函數(shù)里訪問這個net.Socket實例來與客戶端交互。我在代碼里,給createServer方法傳入了一個callback來處理connection事件,實際上也可以略作修改,通過監(jiān)聽connection事件的方法處理客戶端連接。新代碼如下:

var net = require("net");
var server = net.createServer();
server.on('connection', function(sock){
 console.log('client connected, address - ', sock.remoteAddress, ' port - ', sock.remotePort);
 sock.setEncoding('utf8');
 sock.on('data', function(data){
  console.log('got data from client - ', data);
  sock.write(data);
 });
 sock.on('end', function(){
  console.log('client disconnected');
 });
 sock.on('error', function(err){
  console.log('socket error - ', err);
 });
});
server.maxConnections = 10;
server.listen(7, function(){
 console.log('echo server bound at port - 7');
});

效果是一樣的。

net.Socket對象有一些方法,比如write可以寫數(shù)據(jù)。還有一些事件,比如error、end、data等,看代碼就能明白用法。還有一些屬性,比如remoteAddress、remotePort。

client代碼分析

client.js:

var net = require("net");
var readline = require('readline');
console.log('type "exit" or "quit" to quit.');
// sock is an instance of net.Socket
var sock = net.connect({port: 7}, function(){
 console.log('server connected');
 sock.setEncoding('utf8');
 sock.write('Hello Echo Server\r\n');
});
sock.on('data', function(data){
 console.log('got data from server - ', data);
});
sock.on('end', function(){
 console.log('client disconnected');
});
sock.on('error', function(err){
 console.log('socket error - ', err);
});
sock.on('close', function(){
 console.log('echo client was closed');
 process.exit(0);
});
var rl = readline.createInterface({
 input: process.stdin
});
function quitEcho(){
 rl.close();
 sock.end();
 console.log('quit echo client');
}
rl.on('line', function(cmd){
 if(cmd.indexOf('quit') == 0 || cmd.indexOf('exit') == 0){
  quitEcho();
 }else{
  sock.write(cmd + '\r\n');
 }
});
rl.on('SIGINT', quitEcho);

調(diào)用readline模塊來從標(biāo)準(zhǔn)輸入讀取數(shù)據(jù)來發(fā)送給客戶端。readline的文檔在這里:https://nodejs.org/api/readline.html。正如它的名字,Readline可以讓你一行一行的讀取一個流。比較常見的就是讀取標(biāo)準(zhǔn)輸入流。Readline有一些事件,我們用到的“l(fā)ine”事件,在一行數(shù)據(jù)就緒時會發(fā)射,帶一個代表數(shù)據(jù)的參數(shù)。監(jiān)聽line事件,在回調(diào)中調(diào)用net.Socket的write方法寫入數(shù)據(jù)。當(dāng)你在控制臺輸入“quit”或“exit”時,調(diào)用quitEcho退出。

net.connect方法可以連接到指定的服務(wù)器,它的原型如下:

net.connect(options[, connectionListener])

第一個參數(shù)是Object,用于指定和連接相關(guān)的選項,比如服務(wù)端的host、port等,如果不指定host,就默認用localhost作為服務(wù)端主機名.

net.connect返回net.Socket對象,一旦拿到了Socket實例,就可以用net.Socket來為所欲為了。監(jiān)聽了data事件來接收服務(wù)端發(fā)揮的數(shù)據(jù),監(jiān)聽close事件來退出進程。net.Socket的具體API,參考https://nodejs.org/api/net.html#net_class_net_socket。

以上就是怎么在Node.js中實現(xiàn)套接字,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

本文名稱:怎么在Node.js中實現(xiàn)套接字
文章出自:http://www.aaarwkj.com/article4/gjgjie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站、軟件開發(fā)、靜態(tài)網(wǎng)站、網(wǎng)頁設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
成年网站在线91九色| 杨幂一区二区在线观看| 激情亚洲欧美日韩精品| 亚洲欧美日韩校园春色| 加勒比视频在线观看一区| 日本免费中文字幕在线| 中文字幕亚洲无级av| 日本在线人妻一区二区| 日韩一区二区三区无吗电影| 亚洲国产精品福利在线| 国产精品成人一区二区三| 亚洲av天堂天天天堂色| 国产精品一区二区高潮| 中文字幕精品一区二区三区视频 | 精品国产一区=区三区乱码| 亚洲国产精品激情在线 | 公交车上没穿内裤被插高潮不断| 久久精品国产亚洲av无| 国产精品熟女一区二区三区| 91观看免费完整版高清| 91九色精品视频在线观看| 日本在线看片一区二区| 欧美在线免费一级黄片| 人妻少妇久久中文字幕久久| 熟妇激情欧美在线播放视频| 国产精品久久中文字幕亚洲| 熟妇一区二区三区av| 亚洲综合一区二区精品久久| 国产无人区码一区二区| 麻豆深夜激情在线观看| 国产成人亚洲精品专区高清| 人妻少妇被猛烈进入久久精品| 97免费公开在线观看| 成人黄色av免费在线观看| 男人的天堂成人午夜视频 | 成人国产亚洲日本欧美| 亚洲欧洲日本一区精品| 中文字幕日本乱码精品久久| 国产亚洲精品一区久久| 麻豆人妻少妇精品系列| 中文字幕亚洲精品99|