在PyOSC中,您需要IP和端口以供OSCServer接收信息。这对我来说没有多大意义。与Max一样,您只需要声明端口。是不是因为接收你总是只需要localhost作为ip?
我有一个Android应用程序,它将OSC消息发送到我的计算机上的python程序。我现在遇到的麻烦就是Python我总是需要输入正确的计算机IP才能使用它。如果我将其更改为“localhost”,它甚至无法工作。
据我所知,对于udp接收,你只需要打开一个端口,IP就无关紧要了,因为它总是是localhost。
class Rating_receiver:
def __init__(self, ip = '192.168.0.3', port = 50010, num_emotion = 9, num_degree = 4):
self.receive_address = ip, port
self.num_emotion = num_emotion
self.num_degree = num_degree
self.choice = targetlist[0]
self.degree = degreelist[0]
def spawn(self):
print"Server Created."
self.receiveServer = OSC.OSCServer(self.receive_address)
self.receiveServer.addDefaultHandlers()
def start(self):
# Start OSCServer
print "\nStarting OSCServer."
self.emorating_oscServer = threading.Thread(target = self.receiveServer.serve_forever)
self.emorating_oscServer.start()
print "\nOSCServer established.
rating_receiver = Rating_receiver(ip = "localhost", port = 7110, num_emotion = 9, num_degree = 4)
rating_receiver.spawn()
因此,如果我将ip设置为“localhost”(服务器可以构建但无法接收任何消息),它将无法工作,只有在我输入实际IP时才能工作,例如“192.168.0.3”。 感谢
答案 0 :(得分:0)
你试过127.0.0.1
吗?它应该无处不在。
我相信你正在提供服务器将使用的IP。
127.0.0.1
基本上意味着:“只听本地连接”。
192.168.0.3
(在您的情况下)表示:“侦听来自整个子网的连接”
0.0.0.0
表示:“倾听来自世界各地的联系。”
答案 1 :(得分:0)
你确实应该使用“localhost”。
定义所需的端口,然后将其他计算机上的消息发送到其ip上运行此代码的消息。我想你已经处理好了端口打开等事情,你知道从外部网络到路由器内部的访问范围的差异,但我会列出它以使其清楚:
您必须定义“default_handler”函数来处理收到的消息,不确定您是否定义了它并忘记在此处显示:
def default_handler(addr, tags, stuff, source):
print "SERVER: No handler registered for ", addr
return None
您可能还想查看OSCServer语法的示例。