Untitled
unknown
plain_text
a year ago
2.3 kB
3
Indexable
Để tái tạo tình huống `recv-q` có giá trị khác 0 bằng Node.js, bạn có thể viết cả server và client sử dụng module `net` của Node.js. Dưới đây là các bước chi tiết: ### Tạo một socket server Tạo một file tên `server.js`: ```javascript const net = require('net'); // Tạo server const server = net.createServer((socket) => { console.log('Client connected'); // Không đọc dữ liệu từ socket, giữ kết nối mở socket.on('data', (data) => { console.log('Received data but not processing it'); }); }); server.on('error', (err) => { console.error(err); }); // Lắng nghe trên port 12345 server.listen(12345, () => { console.log('Server is listening on port 12345'); }); ``` Chạy server này: ```sh node server.js ``` ### Tạo một client gửi dữ liệu Tạo một file tên `client.js`: ```javascript const net = require('net'); // Tạo client và kết nối đến server const client = net.createConnection({ port: 12345 }, () => { console.log('Connected to server'); // Gửi dữ liệu đến server client.write('Du lieu gui den server'); // Giữ kết nối mở và không làm gì thêm setInterval(() => { client.write('Them du lieu gui den server'); }, 1000); }); client.on('error', (err) => { console.error(err); }); ``` Chạy client này: ```sh node client.js ``` ### Kiểm tra `netstat` Sau khi chạy cả server và client, bạn có thể kiểm tra `recv-q` bằng lệnh `netstat`: ```sh netstat -tn | grep 12345 ``` Bạn sẽ thấy giá trị `Recv-Q` khác 0, điều này chỉ ra rằng có dữ liệu trong hàng đợi nhận mà chưa được đọc bởi server. ### Giải thích - **Server**: Chương trình server tạo một socket server lắng nghe kết nối và chấp nhận kết nối từ client, nhưng không đọc dữ liệu từ socket. - **Client**: Chương trình client kết nối đến server và gửi dữ liệu liên tục, nhưng không đóng kết nối. Vì server không đọc dữ liệu từ socket, dữ liệu sẽ tích tụ trong hàng đợi nhận (`Recv-Q`), và bạn sẽ thấy giá trị `Recv-Q` tăng lên trong kết quả của `netstat`.
Editor is loading...
Leave a Comment