python网络聊天器多线程版

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

说明:

编写一个有2个线程的程序

线程1用来接收数据然后显示

线程2用来检测键盘数据然后通过udp发送数据

要求:

实现上述要求

总结多任务程序的特点

示例程序:

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("\n>>%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

网络调试助手的结果:

python网络聊天器多线程版

程序运行过程解析:

首先创建套接字,并绑定到本地的端口8888

输入要进行聊天的对方的ip和端口信息

启动两个线程,一个线程用于发送数据,一个线程用于接收数据

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpdzyg.html