基本上,我想使用套接字模块监听所有端口。我该如何做到port=服务器上所有打开的端口?非常感谢任何指导和资源,这是我当前的代码。
import socket
def Main():
host = '127.0.0.1'
port = 5000
s = socket.socket()
s.bind((host, port))
s.listen(1)
c, addr = s.accept()
print('Connection from: ' + str(addr))
while True:
data = c.recv(1024)
if not data:
break
print('from connected user: ' + str(data))
data = str(data).upper()
print('sending: ' + str(data))
c.send(data)
c.close()
if __name__ == '__main__':
Main()
Run Code Online (Sandbox Code Playgroud)
您可以尝试所有可能的端口并将它们存储在列表中。请记住,低于1024的端口是保留的,某些端口可能正在使用中。因此,您将遇到一些错误,如果无法绑定到该端口,则需要处理这些错误。另外,由于每个套接字只能侦听一个端口,因此每个端口都需要一个套接字。创建一个create_socket返回套接字的函数,然后将其存储为列表。如果您在尝试连接时遇到错误,只需传递这些错误即可。这可能不是一个好方法,但它将为您工作。
def create_socket(port_number):
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_socket.bind(('127.0.0.1', port_number))
server_socket.listen(1)
return server_socket
socket_list = []
for port_number in range(1025,65536):
try:
socket_list.append(create_socket(port_number))
except Exception:
pass
Run Code Online (Sandbox Code Playgroud)