1

我有一个应用程序 Kinectv2osc,它使用 rug.osc 在我的本地机器上发送 UPD 数据包。但它似乎绑定了端口,我无法连接 puredata (OSCdump) 来监听这些 osc 消息。

如果我以相反的顺序启动应用程序,puredata 可以连接,但 Kinectv2Osc 不能。

我猜这两个应用程序都试图绑定端口,那么应该归咎于哪个应用程序?是否有任何解决方法可以使这两个应用程序一起工作?

4

1 回答 1

1

更多细节会很有用,但这可能会有所帮助。

您可能会在本地和远程端口上发生冲突,默认情况下,Rug.Osc 对本地和远程使用相同的端口。如果另一端也在做同样的事情,这可能是个问题。可以让应用程序/套接字很好地运行并共享端口,Rug.Osc 会尝试这样做,但其他人可能不会有同样的感觉。

要解决此问题,您可以覆盖 Rug.Osc 也将绑定的本地端口。如果您使用 0,那么操作系统将选择一个未使用的端口。

IPAddress address = IPAddress.Parse("127.0.0.1"); 
int remotePort = 12345;

// force the OS to select an unused port
int localPort = 0; 

using (OscSender sender = new OscSender(address, localPort, remotePort)) 
{
    sender.Connect();

    sender.Send(new OscMessage("/test", 1, 2, 3, 4));
}

免责声明:Rug.Osc 是我的项目。

于 2015-01-02T13:34:43.367 回答