如何创建TCP监听器?

如何创建TCP监听器?

介绍:我创建了一个 bash 函数,它能够检查端口是否可用,如果为 false,则将其加 1,直到达到某个最大端口号。例如,如果端口 500 不可​​用,则将检查 501 的可用性,直到 550。

目的:为了测试这个 bash 函数,我需要创建一系列处于 LISTEN 状态的端口。

尝试:在 Windows 上,可以使用以下命令创建 LISTEN 端口这些 PowerShell 命令:

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,但没有找到解决此问题的解决方案。

预期答案:我将接受并赞成包含能够创建侦听端口的命令的答案,一旦运行该命令,端口应保持侦听状态,即:

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

答案1

您可以使用 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

网络猫客户端:

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

答案2

您可以使用nc -l作为一种方法来完成您正在寻找的事情。某些实现nc有一个-L允许连接持续存在的选项。

如果您只需要它们一段时间,您可以循环打开此命令for并以这种方式打开一堆端口。

如果您需要这些打开时间更长,您可以使用其中一台超级服务器来创建守护程序。

答案3

使用 netcat 收听。

# nc -l 5555

使用 ss 检查

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

答案4

下面的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

然后您可以从所需的机器进行验证。

相关内容