it-swarm.com.de

Wie erstelle ich einen TCP Listener?

Einführung: Ich habe eine Bash-Funktion erstellt, mit der überprüft werden kann, ob ein Port verfügbar ist, und die um 1 erhöht wird, wenn false, bis zu einer bestimmten maximalen Portnummer. Wenn beispielsweise Port 500 nicht verfügbar ist, wird die Verfügbarkeit von 501 bis 550 überprüft.

Ziel: Um diese Bash-Funktion zu testen, muss ich eine Reihe von Ports erstellen, die sich im Status LISTEN befinden.

Versuche: Unter Windows ist es möglich, einen LISTEN-Port mit diesen PowerShell-Befehlen zu erstellen :

PS C:\Users\u> netstat -nat | grep 1234
PS C:\Users\u> $listener = [System.Net.Sockets.TcpListener]1234
PS C:\Users\u> $listener.Start();
PS C:\Users\u> netstat -nat | grep 1234
TCP    0.0.0.0:1234           0.0.0.0:0              LISTENING       InHost
PS C:\Users\u> $listener.Stop();
PS C:\Users\u> netstat -nat | grep 1234
PS C:\Users\u>

Auf dieser Grundlage habe ich versucht, über einen Befehl nachzudenken, der unter CentOS dasselbe tun könnte, aber ich weiß nicht warum und habe Google gestartet, ohne eine Lösung zu finden, die dieses Problem löst.

Erwartete Antwort : Ich werde die Antwort akzeptieren und bewerten, die einen Befehl enthält, der einen LISTEN-Port erstellen kann, und sobald der Befehl ausgeführt wurde, sollte der Port im LISTEN-Zustand bleiben, dh:

[[email protected] ~]$ ss -nat | grep 500
LISTEN     0      128                       *:500                       *:*
46
030

Du könntest benutzen nc -l als Methode, um das zu tun, wonach Sie suchen. Einige Implementierungen von nc haben ein -L Option, mit der die Verbindungen bestehen bleiben.

Wenn Sie sie nur für eine kurze Zeit benötigen, können Sie diesen Befehl in einer for -Schleife öffnen und auf diese Weise eine Reihe von Ports öffnen.

Wenn diese länger geöffnet sein müssen, können Sie einen der Superserver verwenden, um einen Daemon zu erstellen.

46
Dana Marble

sie können mit Netcat einen Port-Listener erstellen.

[email protected]:~# nc -l 5000

sie können auch mit dem Befehl netstat überprüfen, ob der Port geöffnet ist oder nicht.

[email protected]:~# netstat -tulpen | grep nc
tcp        0      0 0.0.0.0:5000             0.0.0.0:*               LISTEN      0          710327      17533/nc

sie können auch mit nc überprüfen:

Netcat Server Listener:

nc -l localhost 5000

Netcat-Client:

[email protected]:~# nc -v localhost 5000
Connection to localhost 5000 port [tcp/*] succeeded!

wenn der Port nicht geöffnet ist

[email protected]:~# nc -v localhost 5000
nc: connect to localhost port 5000 (tcp) failed: Connection refused
43
sameh Ammar

Hören Sie mit Netcat.

# nc -l 5555

Überprüfen Sie mit ss

# ss -nat|grep 5555
LISTEN     0      1                         *:5555                     *:*
#
7
steve

Beachten Sie, dass Debians netcat -Paket eine andere Implementierung hat, bei der (zumindest) Sie den Port über die Option -p Bereitstellen müssen und die Option -k Nicht funktioniert. Möglicherweise tritt dieses Problem mit Docker auf.

Sudo apt install -y netcat

nc -l -p 1337

Sie können auch openbsd-netcat Verwenden, wenn die Option -k Funktioniert.

0
thisismydesign

Unten python Code ist hilfreich, um einen Dummy-Port zu öffnen

'''    Simple socket server using threads
'''
import socket
import sys
Host = ''   # Symbolic name, meaning all available interfaces
PORT = 5500 # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print 'Socket created'
#Bind socket to local Host and port
try:
    s.bind((Host, PORT))
except socket.error as msg:
    print 'Bind failed. Error Code : ' + str(msg[0]) + ' Message ' + msg[1]
    sys.exit()
print 'Socket bind complete'
#Start listening on socket
s.listen(10)
print 'Socket now listening'
#now keep talking with the client
while 1:
    #wait to accept a connection - blocking call
    conn, addr = s.accept()
    print 'Connected with ' + addr[0] + ':' + str(addr[1])
s.close()

Speichern Sie die Datei und führen Sie sie mit dem Befehl python wie unten gezeigt) aus

~]# python portlistener.py
Socket created
Socket bind complete
Socket now listening

Dann können Sie von der gewünschten Maschine überprüfen.

0
Rohit