1. 程式人生 > >初學Node.js中使用TCP套接字程式設計

初學Node.js中使用TCP套接字程式設計

一:建立TCP伺服器

var net =require('net');var HOST ='127.0.0.1';var PORT =6969;// 建立一個TCP伺服器例項,呼叫listen函式開始監聽指定埠// 傳入net.createServer()的回撥函式將作為”connection“事件的處理函式// 在每一個“connection”事件中,該回調函式接收到的socket物件是唯一的
net.createServer(function(sock){// 我們獲得一個連線 - 該連線自動關聯一個socket物件
    console.log('CONNECTED: '+
        sock.remoteAddress 
+':'+ sock.remotePort);// 為這個socket例項新增一個"data"事件處理函式 sock.on('data',function(data){ console.log('DATA '+ sock.remoteAddress +': '+ data);// 回發該資料,客戶端將收到來自服務端的資料 sock.write('You said "'+ data +'"');});// 為這個socket例項新增一個"close"事件處理函式 sock.on('close',function(data){ console.log
('CLOSED: '+ sock.remoteAddress +' '+ sock.remotePort);});}).listen(PORT, HOST); console.log('Server listening on '+ HOST +':'+ PORT);

服務端也可以用稍不同的方式接受TCP連線,即顯式處理"connection"事件:

var server = net.createServer();
server.listen(PORT, HOST);
console.log('Server listening on '+
    server.address
().address +':'+ server.address().port); server.on('connection',function(sock){ console.log('CONNECTED: '+ sock.remoteAddress +':'+ sock.remotePort);// 其它內容與前例相同});

二:建立TCP客戶端

var net = require('net');

var HOST = '127.0.0.1';
var PORT = 6969;

var client = new net.Socket();
client.connect(PORT, HOST, function() {

    console.log('CONNECTED TO: ' + HOST + ':' + PORT);
    // 建立連線後立即向伺服器傳送資料,伺服器將收到這些資料 
    client.write('I am Chuck Norris!');

});

// 為客戶端新增“data”事件處理函式
// data是伺服器發回的資料
client.on('data', function(data) {

    console.log('DATA: ' + data);
    // 完全關閉連線
    client.destroy();

});

// 為客戶端新增“close”事件處理函式
client.on('close', function() {
    console.log('Connection closed');
});


相關推薦

初學Node.js使用TCP程式設計

一:建立TCP伺服器var net =require('net');var HOST ='127.0.0.1';var PORT =6969;// 建立一個TCP伺服器例項,呼叫listen函式開始監聽指定埠// 傳入net.createServer()的回撥函式將作為”c

UNIX網路程式設計——基本TCP程式設計 【轉貼】

一、基於TCP協議的網路程式 下圖是基於TCP協議的客戶端/伺服器程式的一般流程:                             &

02-基本TCP程式設計

//server.c #include <stdio.h> #include <unistd.h> #include <string.h> #include <errno.h> #include <ctype.h> #include &

基本TCP程式設計

1.  socket函式原型: #include <sys/socket.h> int socket(int domain, int type, int protocol); 2. bind函式原型: #include <sys/socket.h>

TCP程式設計 整理《計算機網路——自頂向下方法(James F. Kurose, Keith W. Rose)》

       與UDP不同,TCP是一個面向連線的協議。這意味著,在客戶端和伺服器能夠開始互相傳送資料之前,它們要先握手和建立一個TCP連線。連線建立之後,當有一方需要給另一方傳送資料,它只需經套接字把資料丟個TCP連線,無需再為資料附上目的地地址。1. 下面討論一下TCP客

網路程式設計基礎 & 基本TCP程式設計-基本函式

套接字基礎 一個通用套接字地址結構sockaddr: struct sockaddr { unsigned short sa_family; //套接字的協議簇地址型別,AF_XX char sa_data[14];//儲存

TCP程式設計—具體流程梳理

一個上午都在除錯一個伺服器端監聽程式,測試的客戶端怎麼都連不上,然後瘋狂在網上搜尋答案無果,最後無意中發現竟是系統沒有聯網。唉,頓時就像是在debug過程中發現某處少了一個逗號是一個樣的鬱悶!不過這個糾結的過程卻讓我把TCP套接字程式設計的整個過程又有了重新的認識。 TC

VCTCP實現 非同步程式設計的原理+程式碼

所謂的非同步套接字程式設計就是  呼叫了 如下函式 WSAAsyncSelect   設定了 套接字的狀態為非同步,有關函式我會在下面詳細介紹。。。 非同步套接字解決了 套接字程式設計過程中的堵塞問題 ...... 什麼是堵塞?請看下面  你可能有過這樣的體會  在 

node.jsmysql連池的使用

lease package lba ref table mysql mod select something https://cnodejs.org/topic/58378543bde2b59e06141f5a 起初的做法是創建一個連接然後使用,後來發現一段時間後會出現

TCP編程

add 編程 數據 strong toa cstring class 結構 sock 基本函數庫 #include<cstring> #include<cstdlib> #include<unistd.h> #include<n

【Java TCP/IP Socket】深入剖析socket——TCP的生命周期

-i 指定 成了 上交 存在 initial com pos 技術分享 建立TCP連接 新的Socket實例創建後,就立即能用於發送和接收數據。也就是說,當Socket實例返回時,它已經連接到了一個遠程終端,並通過協議的底層實現完成了TCP消息或握手信息的交換。

第4章 基本tcp編程

選擇 drl 時間 子網 CP epoll 默認值 operation 完整 4.1 各種套接字api(重要) 4.1.1 socket() 用於創建一個套接字描述符,這個描述符指明的是tcp還是udp,同時還有ipv4還是ipv6 #include <sys/s

TCP

唯一標識 所有 網絡層 協議 red OS 用戶 gre 互聯網 端口的概念 每個電腦一根網線,但是你掛著QQ的同時還可以瀏覽網頁。兩個不同應用的數據在同一根網線裏是如何傳輸的呢?根據七層互聯網模型,這個功能由運輸層(TCP是運輸層主要協議)實現。怎麽實現呢,在網絡層IP

【Java TCP/IP Socket程式設計】----深入剖析----TCP生命週期

目錄   簡介 TCP連線 關閉TCP連線 解調多路複用 --------筆記來自於書籍《Java TCP/IP Socket程式設計》 簡介     新的Socket例項建立後(無論是通過公有的建構函式,或通過呼叫ServerSoc

關於tcp長連結的應用

長連結就是在伺服器和客戶端在連線之後,  經過三次握手,客戶端不斷地向伺服器傳送請求,在此期間保證套接字不主動; 在程式碼中設定if判斷,判斷伺服器接收客戶端請求為空的時候,會四次揮手關閉套接字,斷開連線。 客戶端向伺服器傳送很多次請求,伺服器為了保證資料傳遞的準確性,在返回資料的時

Python之路(第三十一篇) 網路程式設計:簡單的tcp通訊、粘包現象

  一、簡單的tcp套接字通訊 套接字通訊的一般流程 服務端 server = socket() #建立伺服器套接字 server.bind() #把地址繫結到套接字,網路地址加埠 server.listen() #監聽連結 inf_loop:

Qt使用 windows 程式設計 客戶端demo

在Qt裡面使用connect需要加上兩個::不然會與訊號連線衝突 WSADATA wsa; if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0) {     cout << "WSAStartup faile

我的Python成長之路--Day31-基於TCP和UDP的程式設計

在介紹這兩種套接字程式設計之前,我們需要掌握iso七層協議中傳輸層中的和TCP有關的知識點, 三次握手和四次揮手: 首先傳輸層的由來: 網路層的ip幫我們區分子網,乙太網層的mac幫我們找到主機,然後大家使用的都是應用程式,你的電腦上可能同時開啟QQ、暴風影音等多個應用程

TCP和UDP程式設計 (java實現)

在瞭解網路程式設計之前,我們先了解一下什麼叫套接字 套接字即指同一臺主機內應用層和運輸層之間的介面 由於這個套接字是建立在網路上建立網路應用的可程式設計介面 因此也將套接字稱為應用程式和網路之間的應用程式程式設計介面!   關於TCP和UDP這裡就不作太多介紹了,我們知道TCP是面向連

基於threading模組下Thread,實現多執行緒TCP通訊

伺服器 import socket from threading import Thread import struct, json IP = '127.0.0.1' PORT = 8080 ADD = (IP, PORT) server = socket.socket