2017-04-07 61 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.