Используйте сокет в Python, чтобы сделать простой инструмент чата

socket - это пакет, который поставляется с python, дополнительная установка не требуется

готовы:

  1. Один компьютер с установленной виртуальной машиной (VMware) (или два компьютера ( ̄︶ ̄) ↗)
  2. И на хосте, и на виртуальной машине установлен python, и у обоих есть IDE.

Моя конфигурация:

  1. хост win10, виртуальная машина Ubuntu
  2. IDE - это pycharm

Перед созданием инструмента чата нам необходимо знать IP-адрес хоста и виртуальной машины.
Для Ubuntu щелкните правой кнопкой мыши, чтобы открыть терминал, и введите команду для просмотра IP-адреса.

ifconfig

Для выигрыша win + cmd откройте терминал, введите команду для просмотра ip

ipconfig

Мой IP-адрес хоста Win и IP-адрес виртуальной машины соответственно

192.168.1.2 # win
192.168.48.142 # Ubuntu

Мы можем настроить его, если знаем ip

В случае выигрыша код выглядит следующим образом

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


В Ubuntu код выглядит следующим образом (почти такой же, как указано выше)

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

Эффект чата выглядит следующим образом:
поскольку код выигрыша сначала получается, а затем отправляется, сначала отправляется, а затем принимается Ubuntu, поэтому сначала введите его в Ubuntu. Этот код представляет собой полудуплексный режим чата с одним человеком и одним предложением.
Вставьте описание изображения сюда

рекомендация

отblog.csdn.net/qq_41459262/article/details/106798801
рекомендация