背景:
win8.1, python 3.9.7及自带的idle, pycharm 2021.3.1, vs code 1.64.2, 网络助手5.0.2
现象:
idle练习网络编程之显示接收信息时:
>>在用idle发送信息给网络助手时,没有问题,即时接收;
>>用网络助手给idle发送信息时,idle没有(自动)反应
解释:
结论是,需要在idle中连续按键盘的“enter”键2次,idle才会显示接收的信息。期间,idle还是可以正常发送信息。具体讲图片中的“步骤”注释。
在pycharm 和 vs code中,都可以和"网络助手"相互自动互动,即彼此在对方发送信息后,自动显示接收的信息。
代码如下:
from socket import socket, AF_INET, SOCK_DGRAM
from threading import Thread
# 创建连接字
udp_socket = socket(AF_INET, SOCK_DGRAM)
# 绑定端口
udp_socket.bind(("",8989)) # 防止网络助手在多次运行时,随机配置端口
# 接收数据
def recv_fun():
while True:
recv_data = udp_socket.recvfrom(4096)
recv_info = recv_data[0].decode("gb2312")
print(">>接收到的信息:", recv_info)
if recv_info == "stop":
break
# 发送数据
def send_fun():
while True:
addr = ("192.168.137.1",8080)
data = input("<<发送的信息:")
send_info = udp_socket.sendto(data.encode("gb2312"),addr)
#print("发送的信息:", send_info)
#if send_info == "stop":
# break
if __name__ == "__main__":
#创建接受和发送线程
t1 = Thread(target=send_fun)
t2 = Thread(target=recv_fun)
t1.start()
t2.start()
t1.join()
t2.join()
udp_socket.close()