Nội dung chính
Net Module
Net Module trong Node.js được sử dụng để tạo Server và Client. Module này cung cấp một Network Wrapper không đồng bộ. Cú pháp:
var net = require("net")
Phương thức của net Module trong Node.js
Stt | Phương thức & Mô tả |
---|---|
1 | net.createServer([options][, connectionListener]) Tạo một TCP Server mới. Tham số connectionListener tự động được thiết lập để thành một Listener cho sự kiện 'connection'. |
2 | net.connect(options[, connectionListener]) Đây là một phương thức factory, trả về một 'net.Socket' mới và kết nối tới address và port đã cho. |
3 | net.createConnection(options[, connectionListener]) Đây là một phương thức factory, trả về một 'net.Socket' mới và kết nối tới address và port đã cho. |
4 | net.connect(port[, host][, connectListener]) Tạo một kết nối TCP tới port trên host đã cho. Nếu host không được cung cấp, thì giá trị mặc định là 'localhost'. Tham số connectListener sẽ được thêm vào như là Listener cho sự kiện 'connect'. |
5 | net.createConnection(port[, host][, connectListener]) Tạo một kết nối TCP tới port trên host đã cho. Nếu host không được cung cấp, thì giá trị mặc định là 'localhost'. Tham số connectListener sẽ được thêm vào như là Listener cho sự kiện 'connect'. |
6 | net.connect(path[, connectListener]) Tạo một kết nối Unix Socket tới đường dẫn đã cho. Tham số connectListener sẽ được thêm vào như là Listener cho sự kiện 'connect'. |
7 | net.createConnection(path[, connectListener]) Tạo một kết nối Unix Socket tới đường dẫn đã cho. Tham số connectListener sẽ được thêm vào như là Listener cho sự kiện 'connect'. |
8 | net.isIP(input) Kiểm tra xem input có phải là một địa chỉ IP address không. Trả về giá trị 0 cho một chuỗi không hợp lệ, 4 cho phiên bản địa chỉ IP v4, và trả về 6 cho địa chỉ IP v6. |
9 | net.isIPv4(input) Trả về true nếu input là địa chỉ IP v4, nếu không là false. |
10 | net.isIPv6(input) Trả về true nếu input là địa chỉ IP v6, nếu không là false. |
Lớp net.Server trong Node.js
Lớp net.Server được sử dung để tạo một TCP Server hoặc Local Server.
Phương thức của lớp net.Server trong Node.js
Stt | Phương thức & Mô tả |
---|---|
1 | server.listen(port[, host][, backlog][, callback]) Bắt đầu chấp nhận kết nối trên port và host đã cho. Nếu không cung cấp tham số host, Server sẽ chấp nhận các kết nối trực tiếp tới bất kỳ địa chỉ IPv4 nào (INADDR_ANY). Nếu giá trị port là 0 sẽ gán một port ngẫu nhiên. |
2 | server.listen(path[, callback]) Khởi động một Local Server để nghe các kết nối trên path đã cho. |
3 | server.listen(handle[, callback]) Đối tượng handle có thể được thiết lập cho Server hoặc Socket. Việc này làm cho Server chấp nhận kết nối tới một handle cụ thể. |
4 | server.listen(options[, callback]) Tham số options có thể là các thuộc tính port, host, và backlog. Tham số callback là một hàm callback tùy ý mà làm việc như khi gọi tới phương thức server.listen(port, [host], [backlog], [callback]) . |
5 | server.close([callback]) Đóng tất cả các kết nối đã kết thúc và Server sinh một sự kiện 'close'. |
6 | server.address() Trả về một địa chỉ bound address và port của Server, như đã được báo cáo bởi Hệ điều hành. |
7 | server.unref() Việc gọi phương thức unref trên một Server sẽ cho phép chương trình thoát ra. |
8 | server.ref() Trái ngược với phương thức unref(), việc gọi phương thức ref() sẽ không cho phép chương trình thoát ra. |
9 | server.getConnections(callback) Lấy số các kết nối đồng thời trên một Server một cách không đồng bộ. Hàm callback nên nhận hai tham số err (để Resolve lỗi) và count (để đếm). |
Sự kiện của lớp net.Server trong Node.js
Stt | Sự kiện & Mô tả |
---|---|
1 | listening Xảy ra khi Server đã được gắn kết sau một lời gọi tới server.listen. |
2 | connection Xảy ra khi tạo một kết nối mới |
3 | close Xảy ra khi đóng Server |
4 | error Xảy ra khi xuất hiện bất kỳ lỗi nào. Sự kiện 'close' sẽ trực tiếp được gọi sau sự kiện này. |
Lớp net.Socket trong Node.js
Đối tượng này là lớp trừu tượng của TCP hoặc Local Socket. net.Socket kế thừa duplex Stream interface. Chúng có thể được tạo bởi người dùng hoặc bởi một Client (bởi phương thức connect()) hoặc có thể được tạo bởi Node.js và được truyền tới người dùng thông qua sự kiện 'connection' của một Server.
Sự kiện của net.Socket trong Node.js
net.Socket là một eventEmitter và nó sinh các sự kiện sau.
Stt | Sự kiện & Mô tả |
---|---|
1 | lookup Xảy ra sau khi đã Resolve một hostname nhưng trước khi kết nối |
2 | connect Xảy ra khi một kết nối Socket được thiết lập thành công |
3 | data Xảy ra khi dữ liệu đã được nhận. Tham số data sẽ là một Buffer hoặc String. Phần mã hóa của data được thiết lập bởi socket.setEncoding(). |
4 | error Xảy ra khi xuất hiện bất kỳ lỗi nào. Sự kiện 'close' sẽ được gọi trực tiếp sau sự kiện này. |
5 | close Xảy ra khi Socket đã được đóng. |
Thuộc tính của net.Socket trong Node.js
net.Socket có nhiều thuộc tính hữu ích giúp bạn điều khiển tốt hơn trong việc tương tác với Socket.
Stt | Thuộc tính & Mô tả |
---|---|
1 | socket.bufferSize Thuộc tính này chỉ số lượng ký tự đã được đệm |
2 | socket.remoteAddress Biểu diễn chuỗi của địa chỉ Remote IP. |
3 | socket.remoteFamily Biểu diên chuỗi của Remote IP Family. Đó là 'IPv4' hoặc 'IPv6'. |
4 | socket.remotePort Biểu diễn dạng số của Remote Port. Ví dụ 80 hoặc 21. |
5 | socket.localAddress Biểu diễn chuỗi của địa chỉ Local IP mà một Remote Client kết nối tới. Ví dụ, nếu bạn đang lắng nghe trên '0.0.0.0' và Client kết nối trên '192.168.1.1', thì giá trị sẽ là '192.168.1.1'. |
6 | socket.localPort Biểu diễn dạng số của Local Port. Ví dụ 80 hoặc 21. |
7 | socket.bytesRead Số lượng byte đã nhận được. |
8 | socket.bytesWritten Số lượng byte đã được gửi. |
Phương thức của net.Socket trong Node.js
Stt | Phương thức & Mô tả |
---|---|
1 | new net.Socket([options]) Xây dựng một đối tượng Socket mới. |
2 | socket.connect(port[, host][, connectListener]) Mở kết nối cho một Socket đã cho. Nếu bạn cung cấp hai tham số port và host, thì khi đó Socket sẽ được mở dưới dạng như là một TCP Socket. Nếu bạn không cung cấp host, thì giá trị mặc định là localhost. Nếu bạn cung cấp tham số path, thì Socket sẽ đươc mở dưới dạng như một Unix Socket tới đường dẫn path đó. |
3 | socket.connect(path[, connectListener]) Mở kết nối cho một Socket đã cho. Nếu bạn cung cấp hai tham số port và host, thì khi đó Socket sẽ được mở dưới dạng như là một TCP Socket. Nếu bạn không cung cấp host, thì giá trị mặc định là localhost. Nếu bạn cung cấp tham số path, thì Socket sẽ đươc mở dưới dạng như một Unix Socket tới đường dẫn path đó. |
4 | socket.setEncoding([encoding]) Thiết lập mã hóa encoding cho Socket dưới dạng như một Readable Stream. |
5 | socket.write(data[, encoding][, callback]) Gửi dữ liệu trên Socket. Tham số thứ hai xác định mã hóa trong trường hợp dữ liệu dạng chuỗi. Mã hóa mặc định là UTF8. |
6 | socket.destroy() Bảo đảm rằng không có bất kỳ hoạt động I/O xảy ra trên Socket này. Phương thức này chỉ cần thiết khi xuất hiện lỗi. |
7 | socket.pause() Tạm dừng việc đọc dữ liệu. Do đó sự kiện 'data' không được sinh |
8 | socket.resume() Tiếp tục việc đọc dữ liệu sau khi đã tạm dừng với phương thức pause(). |
Ví dụ sử dụng net Module trong Node.js
Dưới đây là ví dụ minh họa một số phương thức và thuộc tính của net Module trong Node.js.
Tạo server.js có nội dung:
var net = require('net'); var server = net.createServer(function(connection) { console.log('Ket noi voi Client'); connection.on('end', function() { console.log('Mat ket noi voi Client'); }); // gui du lieu den client connection.write('Hello World!\r\n'); connection.pipe(connection); }); server.listen(7777, function() { console.log('Server dang lang nghe tren cong 7777'); });
Chạy server.js để xem kết quả:
> node server.js
Kết quả:
Tiếp theo, tạo client.js như dưới đây:
var net = require('net'); var client = net.connect({port: 7777}, function() { console.log('Da ket noi voi Server!'); }); client.on('data', function(data) { // nhan du lieu tu server console.log(data.toString()); client.end(); }); client.on('end', function() { console.log('Mat ket noi voi Server'); });
Chạy client.js trên một màn hình terminal khác để xem kết quả:
> node client.js
Kết quả:
Kiểm tra kết quả trên màn hình Terminal đang chạy server.js:
Kết quả: