Implementar la función de transmisión del protocolo TCP con python (código de servidor)

A diferencia del código del cliente (consulte mi blog anterior para obtener el código del cliente), el servidor necesita vincular el número de puerto y configurar el servicio de monitoreo. Hay dos pasos especiales más, y se necesitan dos nuevas líneas de código para
preparar: Windows as En el cliente, instale el asistente de depuración de red en Windows, linux como servidor y escriba el siguiente código, y descubra que la dirección IP en el servidor (máquina virtual Linux) es:
Inserte la descripción de la imagen aquí

import socket

if __name__ == '__main__':
    # 先建立服务端的套接字对象,第一个参数同样是ipv4协议,第二个参数是TCP协议
    tcp_server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
    # 给程序绑定端口号(相对于客户端代码多的步骤)
    tcp_server_socket.bind(("", 9090))
    # 设置监听服务,等待客户端向服务端发送信息
    # 100:最大等待建立连接的个数
    tcp_server_socket.listen(100)
    # 等待客户端建立连接的请求, 只有客户端和服务端建立连接成功代码才会解阻塞,代码才能继续往下执行
    # 1. 专门和客户端通信的套接字: service_client_socket
    # 2. 客户端的ip地址和端口号: ip_port
    result = tcp_server_socket.accept()
    print(result)
    # 关闭服务端的套接字, 终止和客户端提供建立连接请求的服务
    tcp_server_socket.close()

Cuando el programa se ejecuta en este momento, el programa se detendrá en el método de aceptación y esperará a que el cliente envíe una solicitud. En este momento, abra el asistente de depuración de red:
Inserte la descripción de la imagen aquí
haga clic en la conexión y luego vuelva a la máquina virtual. Puede ver el siguiente código:
Inserte la descripción de la imagen aquí
Copie lo siguiente:
(<socket.socket fd = 4, family = AddressFamily.AF_INET, type = SocketKind.SOCK_STREAM, proto = 0, laddr = ('192.168.52.128', 9090), raddr = ('192.168.52.1', 50036)>, ('192.168.52.1', 50036))
Esta salida es una tupla, el primer parámetro es un nuevo objeto de socket , y la siguiente es la solicitud desde la dirección IP, es decir, el cliente. En este momento, abra cmd e ingrese ipconfig para verificar Obtenga la ip local:
Inserte la descripción de la imagen aquí
Nota : El objeto de socket en este momento es un nuevo objeto de socket, no el objeto tcp_server_socket anterior. El socket bind (vinculado) se puede entender como un socket pasivo en cualquier momento Listo para recibir mensajes del cliente puede entenderse ya que el objeto de socket anterior genera un nuevo objeto para asumir la nueva tarea. Si hay un nuevo mensaje del cliente, entonces tcp_server_socket generará un nuevo objeto de socket Para hacerse cargo de la nueva tarea.

Supongo que te gusta

Origin blog.csdn.net/weixin_48445640/article/details/108892957
Recomendado
Clasificación