Modul bersih disediakan dalam Node.js, yang menyediakan enkapsulasi dan sokongan untuk TCP dan Socket. Artikel ini akan memperkenalkan anda kepada modul bersih dalam Node.
Apabila saya menonton tutorial sebelum ini, banyak yang bermula dari IO, penimbal, laluan, acara, fs, proses, mekanisme gelung peristiwa nod ini memang yang utama kebergantungan pembangunan yang bergantung kepada pembangunan nod Tetapi saya agak bimbang Dari masa saya belajar tentang nod, ini bermakna nod boleh melakukan bahagian belakang, tetapi separuh pertama kursus ini adalah mengenai keupayaan yang dimilikinya, iaitu, bagaimana. untuk berkomunikasi dengan pelanggan pada akhirnya. Pengenalan kepada modul komunikasi pelanggan.
Saya berasa sangat tidak selesa, jadi apabila saya menulis ringkasan saya sendiri, saya mesti menulis modul yang berkomunikasi antara pelayan dan pelanggan terlebih dahulu untuk berasa selesa. Walaupun modul acara dan modul fs terlibat dalam proses Anda boleh mengetepikan mata pengetahuan buat sementara waktu dan hanya memahami bagaimana modul net
melaksanakan komunikasi secara keseluruhan >1. Model protokol tujuh lapisan OSI
Pengajaran pengaturcaraan]Hantar gambar lama ini:
Untuk bahagian hadapan kami, kami perlu mengingati hasil sistem suite protokol TCP/IP.
Lapisan aplikasi: http (port 80), FTP (21), SMTP ( Hantar mel), POP (terima mel), DNSICMP
ICMP
Kluster protokol TCP/IP bukan sahaja merujuk kepada protokol TCP dan IP, tetapi kerana kedua-dua protokol ini terlalu keluar dari bulatan, TCP/IP. digunakan untuk merujuk secara kolektif kepada koleksi protokol yang berkaitan dengan Internet Juga Terdapat cara lain untuk mengatakan ia adalah nama kolektif untuk keluarga protokol yang digunakan dalam penggunaan protokol TCP/IP.
Aliran penghantaran antara klien dan pelayan adalah seperti berikut
Jika aksara menjadi dan
, aliran penghantaran adalah seperti berikut:发送者
接受者
Ia dapat dilihat bahawa semasa proses penghantaran, dari penghantaran bermula dari akhir penerimaan, maklumat header yang diperlukan akan ditambah tanpa melalui lapisan protokol dan pengekodan lapisan demi lapisan. Kemudian apabila ia datang ke bahagian penerima, ia akan melakukan sebaliknya, menanggalkan pengepala yang sepadan selepas setiap lapisan Hanya tunggu sehingga tamat data HTTP.
Gambar di atas adalah daripada "Illustrated HTTP"
Ragu: Mengapa ia ada dalam buku Selepas menggabungkan hasil sistem OSI ke dalam Protokol lima lapisan TCP/IP di banyak tempat, adakah nama lapisan rangkaian akan menjadi lapisan Internet?Di atas ialah model protokol rangkaian umum.
2. Sambungan TCP
Jabatan tangan pertama: Pelanggan menghantar bit bendera SYN (nombor jujukan ialah J) ke pelayan, dan memasuki keadaan SYN_SENT (menunggu pengesahan daripada pelayan)
Jabatan tangan Kedua Kedua: Pelayan menerima SYN J daripada klien Pelayan akan mengesahkan bahawa paket data telah diterima dan menghantar bit bendera ACK (nombor urutan ialah J + 1) dan bit bendera SYN (nombor urutan ialah K), dan kemudian masukkan keadaan SYN_REVD ( Permintaan penerimaan dan tunggu status pengesahan pelanggan)Jabatan tangan ketiga: Selepas pelanggan memasuki keadaan penubuhan sambungan, ia menghantar bit bendera ACK (K+ 1) ke pelayan untuk mengesahkan bahawa klien telah menerima penubuhan sambungan, dan pelayan Selepas menerima bendera ACK, pelayan memasuki keadaan sambungan yang telah ditetapkanJ dan K digunakan untuk menentukan siapa yang meminta Tiada perbezaan dalam struktur SYN dan ACK. tetapi objek yang dihantar adalah berbeza .
3. Modul bersih
Pertama sekali, untuk mempelajari API, anda masih disyorkan untuk pergi terus ke dokumentasi rasmi Kandungan dokumentasi Cina bukan versi terkini
bila belajar, Setiap kali saya ada masa untuk membaca dokumen Bahasa Inggeris, saya cuba membaca dokumen Bahasa Inggeris Saya telah menegaskan perkara ini selama setengah tahun saya tidak tahan pada mulanya, tetapi sekarang saya boleh menahan ketidakselesaan dan membacanya Kemajuan telah jelas dalam setengah tahun Dan Ketidakselesaan seperti ini adalah perkara yang baik, ini bermakna bahawa ini bukan zon selesa anda sumber kemajuanSeterusnya, mari kita ke intinya Memandangkan anda ingin mempelajari komunikasi, maka Kami memerlukan dua objek untuk mensimulasikan klien dan pelayan masing-masing . Cipta melalui baris arahan:
client.js
service.js
touch client.js && touch service.js
net
LISTENT
Pada masa ini, pelayan sepadan dengan status pelayan
const net = require("net"); const post = 3306; const host = "127.0.0.1"; const server = net.createServer(); server.listen(post, host);
kemudian memantau beberapa acara yang diperlukan, iaitu cangkuk yang disediakan oleh pelayan (Milik pengetahuan berkaitan acara) LISTEN
Rentetan kod di atas melibatkan,
server.on("listening", () => { console.log("服务器已经可以连接啦"); }); server.on("connection", (socket) => { console.log("有客户端来访咯"); }); server.on("close", () => { console.log("服务器关闭了"); }); server.on("error", (error) => { console.log("服务器出错啦: ", error); // error 有错误的信息 });
listening
: peristiwa dicetuskan apabila pelanggan melawatconnection
: Dicetuskan oleh penutupan pelayanclose
: Dicetuskan oleh ralat pelayanerror
Untuk close
Diproses dengan membunuh benang
ps kill -9 pid
Gouzi, parameter formal ialah nama soket Terjemahan bahasa Cinanya ialah perkataan bersarang, yang dirangkumkan oleh nod ke dalam aliran (Strim). data itu sendiri mempunyai kaedah tersendiri. Saya memproses
dalamconnection
connection
socket
server.on("connection", (socket) => { console.log("有客户端来访咯"); socket.on("data", (data) => { console.log(data); // 客户端发送过来的数据 }); });
Memandangkan pelayan boleh menerima data yang dihantar oleh pelanggan, ia secara semula jadi boleh membalas kepada pelanggan Tulis dalam
(sudah tentu ia juga boleh Ditulis di luar):
socket.on
Pada masa ini, jika pelanggan telah selesai menerima data. dan kemudian menutup sambungan. Kami juga boleh mendengarnya melalui cangkuk
socket.write("我已经收到你的服务器了哦,客户端");
socket.on('close‘)
Masukkan ringkasan
socket.on("close", () => { console.log("客户端把另外一头的流给关了"); });
adalah seperti berikut: socket
client.js
service.js
const net = require("net"); const post = 3306; const host = "127.0.0.1"; const server = net.createServer(); server.listen(post, host); server.on("listening", () => { console.log("服务器已经可以连接啦"); }); server.on("connection", (socket) => { console.log("有客户端来访咯"); socket.on("data", (data) => { console.log(data); // 客户端发送过来的数据 socket.write("我已经收到你的服务器了哦,客户端"); }); socket.on("close", () => { console.log("客户端把另外一头的流给关了"); server.close(); // 客户端已经不要数据了,那么我们就把服务器给关闭了吧 }); }); server.on("close", () => { console.log("服务器关闭了"); }); server.on("error", (error) => { console.log("服务器出错啦: ", error); // error 有错误的信息 });
Ringkasan peristiwa
const net = require("net"); const post = 3306; const host = "127.0.0.1"; const socket = net.connect(post, host); socket.on("connect", () => { console.log("已经连接到服务器了哦"); }); socket.write("服务器, 我来了"); socket.on("data", (data) => { console.log(data.toString()); socket.end(); }); socket.on("close", () => { console.log("连接已关闭了"); });
socket
connect
: Menerima parameter yang dihantar oleh pelayan data
: Boleh dicetuskan selepas penerimaan data selesai end
: Dicetuskan oleh penutupan soket Jalankannya pada terminal: close
Lihat hasil cetakan sendiri.service.js
Artikel ini diterbitkan semula daripada: https://juejin.cn/post/7084618854801866765client.js
node service.js node client.js
tutorial nodejs
!Atas ialah kandungan terperinci Artikel untuk bercakap tentang modul bersih dalam Node. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!