Τερματισμός Node.js και συγκρούσεις θυρών — DedSec Project
Τερματισμός Node.js και συγκρούσεις θυρών Τι συμβαίνει Το EADDRINUSE σημαίνει ότι άλλη διεργασία ακούει ήδη στη διεύθυνση και θύρα· δεν πρόκειται για συντακτικό λάθος. Πρακτικός έλεγχος…
Τι συμβαίνει
Το EADDRINUSE σημαίνει ότι άλλη διεργασία ακούει ήδη στη διεύθυνση και θύρα· δεν πρόκειται για συντακτικό λάθος.
Πρακτικός έλεγχος
Κατάγραψε τοπικές θύρες, έλεγξε ιδιοκτησία και διάλεξε άλλη θύρα ή σταμάτα μόνο δική σου διεργασία. Κράτησε logs αν ο server κλείνει χωρίς μήνυμα.
Συνήθεις παγίδες
Χειρίσου σφάλματα εκκίνησης και signals για ομαλό κλείσιμο. Μην ξαναδοκιμάζεις απεριόριστα την ίδια κατειλημμένη θύρα.
Μικρό παράδειγμα για προσαρμογή
ss -ltn
Αναπαραγωγή bind collision χωρίς ξένη διεργασία
Σε δικό σου Node πρόγραμμα δημιούργησε server σε 127.0.0.1 και port 0, ώστε το OS να επιλέξει διαθέσιμη θύρα. Μετά το listening event πάρε server.address().port και προσπάθησε δεύτερο listener στην ίδια διεύθυνση/θύρα. Το δεύτερο error πρέπει να είναι EADDRINUSE. Στο cleanup κλείσε μόνο τα δύο test server instances.
Το port 0 ζητά δυναμική δέσμευση και δεν είναι παγκόσμια reserved θύρα για επόμενα runs. Το bind σε 0.0.0.0 ακούει σε όλα τα IPv4 interfaces και έχει διαφορετικό exposure από localhost. Σύγκρινε διεύθυνση και θύρα μαζί.
Server που εκπέμπει events αναφέρει μεταγενέστερη αποτυχία startup στο error event. Απλό try/catch γύρω από construction δεν πιάνει υποχρεωτικά αυτό το error. Σύνδεσε handlers πριν από listen, κατάγραψε chosen address και χειρίσου shutdown μία φορά. Exit code μηδέν χωρίς listener μπορεί να σημαίνει ολοκλήρωση ή απουσία active handle, όχι κρυφά ενεργό web server.