Use socket en python para hacer una herramienta de chat simple

socket es un paquete que viene con python, no se requiere instalación adicional

Listo:

  1. Una computadora con una máquina virtual (VMware) instalada (o dos computadoras ( ̄︶ ̄) ↗)
  2. Tanto el host como la máquina virtual tienen Python instalado y ambos tienen IDE

Mi configuración:

  1. host win10, máquina virtual Ubuntu
  2. IDE es pycharm

Antes de crear una herramienta de chat, necesitamos conocer la ip del host y la máquina virtual.
Para Ubuntu, haga clic derecho para abrir la terminal e ingrese el comando para ver la ip

ifconfig

Para win, win + cmd abre la terminal, ingresa el comando para ver ip

ipconfig

Mi ip de host win y la ip de la máquina virtual son respectivamente

192.168.1.2 # win
192.168.48.142 # Ubuntu

Podemos configurarlo si conocemos la ip

En ganar, el código es el siguiente

import socket
def main():
    local_addr = ('192.168.1.2', 8080) # win主机ip和端口号(端口号自定,不和其他软件冲突就好)
    dest_addr = ('192.168.48.142', 8877) # Ubuntu虚拟机ip和端口号 
    while True:
        # 创建udp套接字
        socket_udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        # 绑定win主机ip
        socket_udp.bind(local_addr)
        # 接受虚拟机传来的文件,1024为最大字节数
        data_to_receive = socket_udp.recvfrom(1024)
        # 将接收到的信息打印出来
        print(data_to_receive[0].decode('utf-8'))
        # 输入发送的内容
        data_to_send = input("please enter:")
        socket_udp_send.sendto(data_to_send.encode('utf-8'), dest_addr)
        # 关闭套接字
        socket_udp_send.close()
if __name__ == '__main__':
    main()


En Ubuntu, el código es el siguiente (casi el mismo que el anterior)

import socket
def main():
    local_addr = ('192.168.48.142', 8877)
    dest_addr = ('192.168.1.2', 8080)
    while True:
        socket_udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        socket_udp.bind(local_addr)
        data_to_send = input("please enter:")
        socket_udp.sendto(data_to_send.encode('utf-8'), dest_addr)
        data_to_receive = socket_udp.recvfrom(1024)
        print(data_to_receive[0].decode('utf-8'))
        socket_udp.close()
if __name__ == '__main__':
    main()

El efecto del chat es el siguiente:
dado que el código win se recibe primero y luego se envía, Ubuntu se envía primero y luego se recibe, así que introdúzcalo primero en Ubuntu. Este código es un modo de chat semidúplex con una persona y una oración.
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_41459262/article/details/106798801
Recomendado
Clasificación