Utilisez socket en python pour créer un outil de chat simple

socket est un package fourni avec python, aucune installation supplémentaire n'est requise

prêt:

  1. Un ordinateur avec une machine virtuelle (VMware) installée (ou deux ordinateurs ( ̄︶ ̄) ↗)
  2. L'hôte et la machine virtuelle ont tous deux python installés, et les deux ont des IDE

Ma configuration:

  1. hôte win10, machine virtuelle Ubuntu
  2. IDE est pycharm

Avant de créer un outil de chat, nous devons connaître l'adresse IP de l'hôte et de la machine virtuelle.
Pour Ubuntu, cliquez avec le bouton droit de la souris pour ouvrir le terminal et entrez la commande pour afficher l'adresse IP

ifconfig

Pour win, win + cmd ouvrez le terminal, entrez la commande pour afficher ip

ipconfig

Mon adresse IP d'hôte gagnant et mon adresse IP de machine virtuelle sont respectivement

192.168.1.2 # win
192.168.48.142 # Ubuntu

Nous pouvons le configurer si nous connaissons l'ip

En cas de victoire, le code est le suivant

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()


Sur Ubuntu, le code est le suivant (presque le même que ci-dessus)

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()

L'effet de chat est le suivant:
puisque le code gagnant est d'abord reçu puis envoyé, Ubuntu est d'abord envoyé puis reçu, alors entrez-le d'abord dans Ubuntu. Ce code est un mode de discussion semi-duplex avec une personne et une phrase
Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/qq_41459262/article/details/106798801
conseillé
Classement