Hilf mir, den Status eines bestimmten Ports zu verfolgen: "LISTENING", "CLOSE_WAIT", "ESTABLISHED". Ich habe eine analoge Lösung mit dem Befehl netstat:
%Vor%Aber ich muss das gleiche mit der Lua Socket-Bibliothek tun. Ist es möglich?
Wie @Peter sagte, verwendet netstat
das proc-Dateisystem, um Netzwerkinformationen, insbesondere Port-Bindungen, zu sammeln. LuaSockets verfügt über eine eigene Bibliothek zum Abrufen von Verbindungsinformationen. Zum Beispiel
Hören
Sie können master:listen(backlog)
verwenden, das angibt, dass der Socket Verbindungen empfangen will und das Objekt in ein Serverobjekt verwandelt. Serverobjekte unterstützen die Methoden accept, getsockname, setoption, settimeout und close. Der Parameter backlog gibt die Anzahl der Clientverbindungen an, die in die Warteschlange gestellt werden und auf den Dienst warten. Wenn die Warteschlange voll ist und ein anderer Client versucht, eine Verbindung herzustellen, wird die Verbindung abgelehnt. Im Erfolgsfall gibt die Methode 1 zurück. Im Fehlerfall gibt die Methode nil zurück, gefolgt von einer Fehlermeldung.
Die folgenden Methoden geben eine Zeichenfolge mit der lokalen IP-Adresse und eine Nummer mit dem Anschluss zurück. Im Falle eines Fehlers gibt die Methode nil zurück.
%Vor% Es gibt auch diese Methode:
client:getpeername()
Dies gibt eine Zeichenfolge mit der IP-Adresse des Peers zurück, gefolgt von der Nummer port , die der Peer für die Verbindung verwendet. Im Falle eines Fehlers gibt die Methode nil zurück.
Für "CLOSE_WAIT", "ESTABLISHED" oder andere Verbindungsinformationen, die Sie abrufen möchten, lesen Sie bitte die Offizielle Dokumentation Es hat alles, was Sie brauchen, mit kurzen Erklärungen der Methoden.
Sie können den Status eines Sockets, das einem anderen Prozess gehört, nicht mit der Sockets-API abfragen. LuaSocket verwendet dies unter den Deckblättern.
Um auf Informationen zu einem anderen Prozess zugreifen zu können, müssen Sie stattdessen das Betriebssystem abfragen. Angenommen, Sie arbeiten unter Linux, bedeutet dies normalerweise, dass Sie sich das proc-Dateisystem ansehen.
Ich bin nicht sehr vertraut mit Lua, aber eine schnelle Google gibt mir dieses Projekt: Ссылка . Ich denke, das ist wahrscheinlich das, was Sie brauchen, vorausgesetzt, sie haben einen Decoder für die relevanten /proc/net
-Dateien geschrieben, die Sie brauchen.
Wie für welche Datei? Wenn es nur der Status ist, denke ich, dass die tcp
-Datei in behandelt werden soll Ссылка