2017-04-07 58 views
0

我正在使用相對簡單的python執行,使用OSC模塊,以便將應用程序發送到其他應用程序。Python OSC,查詢/關閉活動線程

import OSC 
import threading 

#------OSC Server-------------------------------------# 
receive_address = '127.0.0.1', 9002 

# OSC Server. there are three different types of server. 
s = OSC.ThreadingOSCServer(receive_address) 


# define a message-handler function for the server to call. 
def printing_handler(addr, tags, stuff, source): 
    if addr=='/coordinates': 
     print "Test", stuff 

s.addMsgHandler("/coordinates", printing_handler) 

def main(): 
    # Start OSCServer 
    print "Starting OSCServer" 
    st = threading.Thread(target=s.serve_forever) 
    st.start() 
main() 

拼命地跑一次,就會工作得很好,在端口9002

但是,拼命地跑兩次的聽,會返回錯誤:

socket.error:[錯誤10048]只有一個的使用每個套接字地址(協議/網絡地址/端口)通常允許

我的目標是:

  1. 成爲能夠活動線程的端口上查詢
  2. 關閉它們

我試過下面...

import socket 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
result = s.connect_ex(('127.0.0.1', 900socket2)) 
print 'RESULT: ', result 
s.close() 

但給我的失敗結果。 (返回10061無論是積極的和非有效端口的線程)

+0

如何做you'terminate'的'OSCServer'和' st.Thread' – stovfl

+0

我沒有。我該怎麼辦? –

+0

閱讀OSC文件,沒有什麼。讀取源代碼時會出現'shutdown()',試試看。我假設沒有關閉沒有釋放端口。 – stovfl

回答

0

Python » Documentation socketserver.BaseServer:

關機()

Tell the serve_forever() loop to stop and wait until it does. 

server_close()

Clean up the server. May be overridden.