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


40

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

目的:この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                       *:*

補足説明として、このダンスをすべて行わなくてもリスニングポートを見つけることができます。Linuxの場合:netstat -an --tcp | awk '/LISTEN/ {sub(".*:", "", $4); print $4}' | sort -nu。* BSDの場合:netstat -an -f inet -p tcp | awk '/LISTEN/ {sub(".*\\.", "", $4); print $4}' | sort -nu
lcd047

回答:


40

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

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

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


1
代わりに-L:私は示唆し -k--keep-openリッスンモードでの複数の接続受け入れ
マヌエルDurando

37

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

4
ポートを指定する必要があったか、機能-pしませんでした:nc -l -p 1234
Leahkim

nc -l 12345はubuntu 16.04で動作しました

それらのために/bin/nc --> nc.traditional(例えばDebianの)、使用-p@Leahkimは上記、助言として、オプションを選択します。
ankostis

6

netcatを使用してリッスンします。

# nc -l 5555

ssを使用して確認する

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

0

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

sudo apt install -y netcat

nc -l -p 1337

オプションが機能openbsd-netcatする-k場合は、代わりに使用することを検討できます。


0

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

'' 'スレッドを使用した単純なソケットサーバー' '' import socket import sys HOST = ''#使用可能なすべてのインターフェイスを意味する記号名PORT = 5500#任意の非特権ポートs = socket.socket(socket.AF_INET、socket.SOCK_STREAM) 「ソケット作成」を印刷

ソケットをローカルホストとポートにバインドする

try:s.bind((HOST、PORT))socket.error as msg:print 'バインドに失敗しました。エラーコード: '+ str(msg [0])+'メッセージ '+ msg [1] sys.exit()print' Socket bind complete '

ソケットでリッスンを開始

s.listen(10)print 'Socket now listen'

今、クライアントと話し続けます

while 1:#接続を受け入れるのを待つ-connの呼び出しをブロック、addr = s.accept()print 'Connected with' + addr [0] + ':' + str(addr [1])s.close()

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

〜]#python portlistener.pyソケット作成ソケットバインド完了ソケットがリッスンするようになりました

その後、必要なマシンから確認できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.