我想为我的网络课程编写一个程序,我有一个套接字来监听接收数据,如果它监听并且没有接收到数据我应该终止程序,我使用 threading.Timer 像定时器一样工作,并且t = threading.Timer(5, end_data)
在我的函数中有一条线侦听接收数据,但我无法终止 end_data 中的程序,即:
def end_data():
sys.exit()
谁能帮我?我还测试了下面的代码芽没有终止终端中正在运行的程序:(
def end_data():
try:
sys.exit()
except:
print"exception"
我希望当停止终端打印 Tinas-MacBook-Pro:~ tina$
我正在监听名为 receive not main 的函数中的套接字,当经过 5 秒而没有接收到数据时,它将运行 end_data 并且似乎永远不会返回接收函数,该函数的一部分如下所示
def receive():
s2 = socket(AF_INET, SOCK_DGRAM)
s2.bind(addr3_2)
global end_call
global base_window
write=open('pictur.jpg','wb')
s = socket(AF_INET, SOCK_DGRAM)
s.bind(addr3)
while(end_call==0):
t = threading.Timer(5, end_data)
t.start()
recv_data, addr = s.recvfrom(3500)#size ro hala badan check kon
t.cancel()
首先我决定在 5 秒后设置 global var end_call 但它不起作用,因为它永远不会回来接收函数
对我来说非常有趣的一些事情是如果定义 data_end 像:
def end_data():
os._exit
print "Hi"
嗨将在输出中打印:O