c语言编程笔录

首页 >   > 笔记大全

笔记大全

python探測端口+python监听端口

更新时间:2023-11-29

探测端口

要在Python中探测端口,我们可以使用socket模块来建立一个TCP连接,并尝试连接到指定的主机和端口号。如果连接成功,则可以确定该端口是打开的。

import socket

def port_scanner(host, port):
    # 创建一个TCP套接字对象
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    try:
        # 尝试连接到指定的主机和端口
        s.connect((host, port))
        print(f"Port {port} is open")
    except ConnectionRefusedError:
        print(f"Port {port} is closed")

    # 关闭套接字连接
    s.close()

# 在本地主机上探测端口80
port_scanner("localhost", 80)

监听端口

要在Python中监听端口,我们可以使用socket模块来创建一个TCP服务器套接字对象,并指定要监听的主机和端口号。然后使用bind()方法将套接字绑定到指定的地址,并使用listen()方法开始监听连接请求。一旦有客户端连接到服务器,可以使用accept()方法接受该连接,并在新的线程中处理客户端请求。

import socket
import threading

def handle_client(client_socket):
    # 接收客户端请求并发送响应数据
    request = client_socket.recv(1024)
    print(f"Received: {request.decode()}")

    response = "Hello from the server"
    client_socket.send(response.encode())

    # 关闭客户端套接字连接
    client_socket.close()

def start_server(host, port):
    # 创建一个TCP服务器套接字对象
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # 将套接字绑定到指定的地址
    server_socket.bind((host, port))

    # 开始监听连接请求
    server_socket.listen(5)
    print("Server listening on port", port)

    while True:
        # 接受客户端连接
        client_socket, client_addr = server_socket.accept()
        print("Accepted connection from", client_addr)

        # 在新的线程中处理客户端请求
        client_thread = threading.Thread(target=handle_client, args=(client_socket,))
        client_thread.start()

# 在本地主机上监听端口8080
start_server("localhost", 8080)

总结

通过使用socket模块,我们可以在Python中实现端口的探测和监听。探测端口时,我们可以尝试连接到指定的主机和端口,如果连接成功,则表示该端口是打开的。监听端口时,我们可以创建一个TCP服务器套接字对象,并指定要监听的主机和端口号,然后使用bind()方法将套接字绑定到指定的地址,并使用listen()方法开始监听连接请求。一旦有客户端连接到服务器,我们可以使用accept()方法接受该连接,并在新的线程中处理客户端请求。