ネットワークコース用のプログラムを作成したいのですが、データをリッスンしてデータを受信しない場合はデータをリッスンするソケットがあります。プログラムを終了する必要があります。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$ が表示されると思います
私は main ではなく receive という名前の関数でソケットをリッスンしています。データを受信せずに 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 秒後にグローバル var end_call を設定することにしましたが、関数を受信するために戻ってこないため、機能しませんでした
私にとって非常に興味深いのは、次のように data_end を定義する場合です。
def end_data():
os._exit
print "Hi"
こんにちは、出力に出力されます:O