web-dev-qa-db-ja.com

TCPリスナーを作成する方法は?

はじめに:ポートが利用可能かどうかを確認し、特定の最大ポート番号までfalseの場合にポートを1ずつ増分できるbash関数を作成しました。たとえば、ポート500が使用できない場合、501の可用性は550までチェックされます。

Aim:このbash関数をテストするには、LISTEN状態のポートの範囲を作成する必要があります。

試行:Windowsでは、 これらのPowerShellコマンド を使用してLISTENポートを作成できます。

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>

これに基づいて、CentOSでも同じことができるコマンドについて考えていましたが、理由がわからず、この問題を解決する解決策を見つけることなく、Googleを使い始めました。

予想される回答:LISTENポートを作成できるコマンドを含む回答を受け入れて賛成します。コマンドが実行されると、ポートはLISTEN状態に留まる、つまり:

[user@Host ~]$ ss -nat | grep 500
LISTEN     0      128                       *:500                       *:*
46
030

nc -lは、あなたが探しているものを実行する方法として。 ncの一部の実装には-Lオプションを使用すると、接続を維持できます。

少しの間だけ必要な場合は、このコマンドをforループで開き、多数のポートをそのように開くことができます。

これらをより長く開く必要がある場合は、スーパーサーバーの1つを使用してデーモンを作成できます。

46
Dana Marble

netcatを使用してポートリスナーを作成できます。

root@ubuntu:~# nc -l 5000

netstatコマンドを使用して、ポートが開いているかどうかを確認することもできます。

root@vm-ubuntu:~# netstat -tulpen | grep nc
tcp        0      0 0.0.0.0:5000             0.0.0.0:*               LISTEN      0          710327      17533/nc

ncで確認することもできます:

Netcatサーバーリスナー:

nc -l localhost 5000

Netcatクライアント:

root@vm-ubuntu:~# nc -v localhost 5000
Connection to localhost 5000 port [tcp/*] succeeded!

ポートが開いていない場合

root@vm-ubuntu:~# nc -v localhost 5000
nc: connect to localhost port 5000 (tcp) failed: Connection refused
43
sameh Ammar

Netcatを使用して聞いてください。

# nc -l 5555

Ssを使用して確認する

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

Debianのnetcatパッケージには異なる実装があり、(少なくとも)-pオプションを介してポートを提供する必要があり、-kオプションが機能しないことに注意してください。 Dockerを使用してこの問題が発生する場合があります。

Sudo apt install -y netcat

nc -l -p 1337

openbsd-netcatオプションが機能する場合は、代わりに-kの使用を検討してください。

0
thisismydesign

以下pythonコードはダミーポートを開くのに役立ちます

'''    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()

ファイルを保存して、以下に示すようにpythonコマンドで実行します。

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

次に、必要なマシンから確認できます。

0
Rohit