zoukankan      html  css  js  c++  java
  • python网络聊天器多线程版

    在之前的一篇文章(python网络编程-udp)中实现了一个简单的udp聊天器,只能在单线程下进行收发数据,在学习完多线程之后,实现一个能同时收发数据的udp聊天器。

    说明:

    • 编写一个有2个线程的程序
    • 线程1用来接收数据然后显示
    • 线程2用来检测键盘数据然后通过udp发送数据

    要求:

    1. 实现上述要求
    2. 总结多任务程序的特点

    示例程序:

    import socket
    import threading
    
    
    def send_msg(udp_socket, dest_ip, dest_port):
            """发送消息"""
    
            while True:
                    send_data = input("请输入要发送的信息:")
    
                    udp_socket.sendto(send_data.encode("utf-8"), (dest_ip, dest_port))
    
    
    def recv_msg(udp_socket):
            """接收消息"""
    
            while True:
                    recv_data = udp_socket.recvfrom(1024)
                    recv_ip = recv_data[1]
                    recv_msg = recv_data[0].decode("utf-8")
                    print("
    >>%s:%s" % (recv_ip, recv_msg))
    
    def main():
    
            # 创建套接字
            udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
            # 绑定本地端口
            udp_socket.bind(("", 8888))
    
            # 输入对方的ip和地址
            dest_ip  = input("请输入对方的ip:")
            dest_port = int(input("请输入对方的port:"))
    
    
            t1 = threading.Thread(target=send_msg, args=(udp_socket, dest_ip, dest_port))
            t1.start()
    
            t2 = threading.Thread(target=recv_msg, args=(udp_socket,))
            t2.start()
    
    
    if __name__ == "__main__":
            main()
    
    

    终端运行结果:

    $ python3 聊天器-多线程版.py 
    请输入对方的ip:192.168.92.130
    请输入对方的port:8080
    请输入要发送的信息:hello
    请输入要发送的信息:
    >>('192.168.92.130', 8080):666
    

    网络调试助手的结果:

    程序运行过程解析:

    • 首先创建套接字,并绑定到本地的端口8888
    • 输入要进行聊天的对方的ip和端口信息
    • 启动两个线程,一个线程用于发送数据,一个线程用于接收数据
  • 相关阅读:
    springmvc与servlet初识理解2
    springMVC与servlet的初识
    SpringMVC的依赖和视图解析器配置
    【内网渗透】— 内网信息收集(4)
    机械行业设计软件学习资源整理
    整理的电学课程
    redis src 目录组织结构
    解决Joi报错TypeError: Joi.Validate is not a function问题
    浅谈Node.js开发Web服务器
    JavaScript水仙花数(传递任意n位数)
  • 原文地址:https://www.cnblogs.com/zhangfengxian/p/python-chat-threading.html
Copyright © 2011-2022 走看看