0

从 Python 到scsynthvia的通信pyosc进展顺利,但是当尝试在 Python osc 中接收从scsynth audio server(只是scsynth,不是SuperCollider)发送的消息时,我不明白如何让端口scsynth发送到。

如果我尝试向它发送“/通知”消息,scsynth它应该回复发送地址,但是pyosc我无法在与发送端口相同的端口上设置侦听器,因此我无法检索应该出现的信息背部。

关于如何做到这一点的任何建议?

4

2 回答 2

1

您可以通过使用OSCClient.setServer告诉您的 OSC 客户端使用服务器的套接字进行传输来完成此操作。下面是一个示例来说明 OSC 消息在套接字 8000 上发送和接收的情况:

import OSC

def handle_message(address, tags, contents, source):
    # prints out the message
    print(address)
    print(source)

server = OSC.OSCServer(("localhost",8000))
server.addMsgHandler("/test", handle_message)

msg = OSC.OSCMessage("/test", [1])

client = OSC.OSCClient()
client.setServer(server)
client.connect(("localhost", 8000))
client.send(msg)

server.serve_forever()
于 2017-02-28T12:38:59.267 回答
0

我几乎肯定发送者和接收者必须在不同的端口上。一个用于接收的端口不能同时用于发送。

关于将 OSC 消息发送回 pyosc 我不明白你为什么不使用NetAddr.newthen .sendMSg()。例如(这来自 OSC 通信的文档):

b = NetAddr.new("127.0.0.1", 7771);
b.sendMsg("/hello", "there");

更多信息在这里

例如,如果您想从 SC 自动回复,那么您可以编写一种方法来触发对.sendMsg您的 OSCDef 或 OSCFunc 的响应,例如,它可以简单地等待来自 python 的初始消息并以您希望 python 返回的任何内容进行响应。

于 2017-02-23T19:34:01.830 回答