使用python中的socket制作简单聊天工具

socket是python 自带的包,不需要额外安装

准备:

  1. 一台安装了虚拟机(VMware)的电脑(或者两台电脑( ̄︶ ̄)↗ )
  2. 主机和虚拟机都安装了python, 并且都有IDE

我的配置:

  1. win10主机,Ubuntu虚拟机
  2. IDE为pycharm

在创建聊天工具之前,我们需要知道主机和虚拟机的ip
对于Ubuntu,右键打开终端,输入一下命令查看ip

ifconfig

对于win, win+cmd打开终端,输入一下命令查看ip

ipconfig

我的win主机ip和虚拟机ip分别为

192.168.1.2 # win
192.168.48.142 # Ubuntu

知道ip我们就可以配置了

在win上,代码如下

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

聊天效果如下
由于win代码是先接受再发送,Ubuntu是先发送再接收,所以先在Ubuntu输入。此代码为一人一句的半双工聊天模式
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41459262/article/details/106798801