Rumah  >  Artikel  >  hujung hadapan web  >  Nodejs menentukan sama ada port telah diduduki

Nodejs menentukan sama ada port telah diduduki

王林
王林asal
2023-05-24 13:13:071755semak imbas

Node.js ialah persekitaran masa jalan JavaScript sebelah pelayan yang popular yang digunakan secara meluas untuk pembangunan web dan membina aplikasi rangkaian yang cekap. Dalam pembangunan Node.js, kita sering menghadapi senario di mana kita perlu menentukan sama ada port tertentu telah diduduki. Artikel ini akan memperkenalkan cara menggunakan Node.js untuk menentukan sama ada port telah diduduki, serta penyelesaian biasa dan amalan terbaik.

1. Modul bersih Node.js

Node.js menyediakan modul teras yang dipanggil net, yang digunakan untuk mengendalikan sambungan rangkaian dan menghantar data. Modul bersih mengandungi beberapa komponen pengaturcaraan rangkaian biasa, termasuk pelaksanaan soket TCP dan UDP. Kita boleh menggunakan modul bersih untuk menentukan sama ada port diduduki.

Berikut ialah contoh kod yang menggunakan modul bersih untuk menentukan penghunian port:

const net = require('net');

const port = 3000;
const server = net.createServer();
server.once('error', function (err) {
  if (err.code === 'EADDRINUSE') {
    console.log('Port %d is in use', port);
  }
});

server.listen(port, function () {
  console.log('Server listening on port %d', port);
  server.close();
});

Dalam contoh ini, kami mencipta pelayan TCP dan mengikatnya pada port 3000. Jika port telah diduduki, kami akan menangkap peristiwa ralat dan mengeluarkan mesej kepada konsol. Jika tidak, kami memulakan pelayan dan mendengar pada port, kemudian segera menutup pelayan.

Kelemahan kaedah ini ialah ia memerlukan memulakan pelayan. Jika kita hanya ingin menyemak sama ada proses itu menduduki port tertentu, ini akan menjadi pendekatan yang sangat intensif sumber kerana ia akan mewujudkan proses pelayan yang lengkap.

2. Modul dgram Node.js

Dalam Node.js, modul dgram digunakan untuk memproses datagram UDP dan juga boleh digunakan untuk mengesan sama ada port telah diisi. Berikut ialah contoh kod menggunakan modul dgram:

const dgram = require('dgram');
const socket = dgram.createSocket('udp4');

const port = 3000;

socket.on('error', function (err) {
  if (err.code === 'EADDRINUSE') {
    console.log('Port %d is in use', port);
  }
});

socket.bind(port, function () {
  console.log('Port %d is free', port);
  socket.close();
});

Dalam contoh ini, kami menggunakan modul dgram untuk mencipta soket UDP dan mengikatnya pada port 3000. Jika port telah diduduki, kami akan menangkap peristiwa ralat dan mengeluarkan mesej kepada konsol. Jika tidak, kami mencetak mesej kejayaan dan menutup soket.

3. Modul pihak ketiga: is-port-available

Selain modul teras Node.js, terdapat banyak modul pihak ketiga yang boleh digunakan untuk mengesan sama ada pelabuhan diduduki. is-port-available ialah modul Node.js ringan yang dijalankan pada Windows, Mac dan Linux. Menggunakan modul ini kita boleh mengesan dengan mudah jika port diduduki tanpa menulis kod kompleks. Berikut ialah kod sampel menggunakan modul is-port-available:

const isPortAvailable = require('is-port-available');
const port = 3000;

isPortAvailable(port).then(function(available) {
  if (available) {
    console.log(`Port ${port} is free`);
  } else {
    console.log(`Port ${port} is in use`);
  }
});

Dalam contoh ini, kami menggunakan modul is-port-available untuk mengesan sama ada port 3000 diduduki dan mengeluarkan respons yang sepadan kepada konsol maklumat.

4. Ringkasan

Dalam pembangunan Node.js, mengesan sama ada port telah diduduki adalah tugas yang sangat penting. Kami memperkenalkan cara menggunakan modul teras bersih dan dgram Node.js untuk mengesan port, serta penggunaan modul pihak ketiga adalah-port-tersedia. Apabila memilih port pengesanan, kita harus memilih kaedah yang paling sesuai dengan aplikasi kita. Modul bersih adalah sempurna apabila kita perlu memulakan pelayan untuk mengendalikan permintaan rangkaian. Jika anda hanya ingin mengesan sama ada port tertentu telah diduduki, dgram atau is-port-available mungkin lebih sesuai.

Atas ialah kandungan terperinci Nodejs menentukan sama ada port telah diduduki. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn