python3:用threading+UDP实现的一个可同时收发聊天信息的脚本
需要下载一个网络调试助手来模拟为udp的客户端.
脚本为udp的server端,可以实现同时收发信息。
import socket
import threading
def send_data(udp_socket, dest_ip, dest_port):
"""发送数据"""
while True:
data_send = input('请输入要发送的数据:').encode('gbk')
data_send = udp_socket.sendto(data_send, (dest_ip, dest_port))
def recv_data(udp_socket):
"""接收数据"""
while True:
try:
msg, addr = udp_socket.recvfrom(1024)
print(f'接收的数据为:{msg.decode("gbk")}')
except ConnectionResetError:
pass
def main():
# 1.创建socket
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 2.绑定ip_port
udp_socket.bind(("", 7890))
# 3.client端的ip_port
dest_ip, dest_port = ("192.168.31.187", 8080)
# 4.用多线程实现全双工收发信息.
try:
t_recv = threading.Thread(target=recv_data, args=(udp_socket, ))
t_send = threading.Thread(target=send_data, args=(udp_socket,dest_ip, dest_port))
t_recv.start()
t_send.start()
except Exception:
# 5.关闭socket
udp_socket.close()
if __name__ == '__main__':
main()
执行的主界面如下: