[Python] Prueba de ocupación del puerto de Python (detectar Socket)

Relacionado con el puerto de Windows

El contenido de este artículo es relativamente simple y la parte inicial son algunas descripciones del estado del puerto de Windows.

Consulta de puerto dinámico

netsh int ipv4 show dynamicport tcp

协议 tcp 动态端口范围
---------------------------------
启动端口        : 49152
端口数          : 16384

Configuración de puerto dinámico

Debe ir a la línea de comando del administrador:

netsh int ipv4 set dynamicport tcp start=49152 num=2000

Interfaz de prueba de puerto implementada por Python

El código para implementar un cliente y un servidor en Python es relativamente simple y fácil de operar. En comparación con lenguajes como C/C++, es más adecuado para que los novatos entiendan la programación de Socket.

El código del cliente se perfecciona a partir de la creación de un cliente simple en un principio, porque implica la prueba de ocupación del código del puerto, durante el uso, los lectores pueden implementar el programa de socket correspondiente al entorno según sus propias necesidades.

Sitio web de aprendizaje recomendado: Python Network Programming | Cainiao Tutorial

cliente

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:client.py
 
from ast import Try
import socket               # 导入 socket 模块
import sys

socketList = []

host = socket.gethostname() # 获取本地主机名
remoteHost = '192.168.3.171'
remotePort = 6000                # 设置端口号

errNum = 0
ToTalNum = 0
errPorts = {
    
    }

print("请通过\'netsh int ipv4 show dynamicport tcp\'查看启动端口和端口数,一般情况下该值为49152")
start = eval(input("启动端口:"))
end = eval(input("终止端口:"))

for i in range(start , end): 
    ToTalNum += 1
    s = socket.socket()         # 创建 socket 对象
    localHostAndPort = (host,i)
    try:
        s.bind(localHostAndPort)
        if s.connect((remoteHost, remotePort)) == socket.error:
            print('FAILED', i)
        print(s.recv(1024).decode(), i)
        socketList.append(s)
    except OSError as e:
        errNum += 1
        errPorts[i] = (localHostAndPort, "OSError:", e)

print("Total Port Number(%r)"%ToTalNum, "Error Port Number(%r)"%errNum)
print("Error Ports:")
for err in errPorts.keys():
    print(err, errPorts[err])

if len(errPorts) == 0:
    print("All Ports success (%d) ~"%start, "(%d)"% end)

print("输入\'exit\'关闭CLIENT:")
char = input()
while char != "exit":
	# print(char)
	char = input()

for skt in socketList:
    skt.close()
# print(socketList)

Servidor

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:server.py
 
import socket               # 导入 socket 模块
 
s = socket.socket()         # 创建 socket 对象
host = socket.gethostname() # 获取本地主机名
port = 12345                # 设置端口
s.bind((host, port))        # 绑定端口

msg = 'Success!'  #strip默认取出字符串的头尾空格
 
s.listen(5)                 # 等待客户端连接
while True:
    c,addr = s.accept()     # 建立客户端连接
    print('连接地址:', addr)
    c.send(msg.encode('utf-8'))
    c.close()                # 关闭连接

Supongo que te gusta

Origin blog.csdn.net/Fuel_Ming/article/details/123569072
Recomendado
Clasificación