C++ 停止OSC UDP侦听器功能。Xcode iOS应用程序
我正在开发一个应用程序,通过UDP在主机程序和iPad之间发送OSC数据。从iPad发送到主机程序是相当直截了当的。然而,从iPad上的主机程序接收数据更麻烦 我已经到了一个地步,iPad正在接收数据,但却陷入了.run()数据包侦听器函数中。据我所知,.break()会中断函数并返回主程序,但它似乎不起作用 <>我在OSO环境中更熟悉Objto-C,所以这可能是我对C++的初步理解,让我失望。 下面的代码:(我一直在使用oscPack库生成此代码。可在此处获得:) 在我的主函数中(break()点似乎不起作用): 我的包侦听器类,非常类似于oscPack示例。经过一些参数修改。这是另一个我认为可能导致问题的领域。如果我的osc消息没有正确填充,它会停止返回run()函数吗C++ 停止OSC UDP侦听器功能。Xcode iOS应用程序,c++,c,xcode,udp,osc,C++,C,Xcode,Udp,Osc,我正在开发一个应用程序,通过UDP在主机程序和iPad之间发送OSC数据。从iPad发送到主机程序是相当直截了当的。然而,从iPad上的主机程序接收数据更麻烦 我已经到了一个地步,iPad正在接收数据,但却陷入了.run()数据包侦听器函数中。据我所知,.break()会中断函数并返回主程序,但它似乎不起作用 我在OSO环境中更熟悉Objto-C,所以这可能是我对C++的初步理解,让我失望。 下面的代码:(我一直在使用oscPack库生成此代码。可在此处获得:) 在我的主函数中(break()点
class ExamplePacketListener : public osc::OscPacketListener {
protected:
virtual void ProcessMessage( const osc::ReceivedMessage& m,
const IpEndpointName& remoteEndpoint )
{
(void) remoteEndpoint; // suppress unused parameter warning
try{
// example of parsing single messages. osc::OsckPacketListener
// handles the bundle traversal.
if( std::strcmp( m.AddressPattern(), "/oscMasterSend" ) == 0 ){
// example #1 -- argument stream interface
osc::ReceivedMessageArgumentStream args = m.ArgumentStream();
bool a1;
args >> a1 >> osc::EndMessage;
NSLog(@"%d",a1);
}
}
}
};
如有任何建议,将不胜感激
谢谢,
Tom。设置一些“停止”布尔标志,并在本地堆栈上向侦听器发送一个空数据报,以唤醒侦听器,使其能够检查标志。@MartinJames,感谢您的反馈。但是我不确定我是否遵循了,你是说类中有一个stop标志吗?是的,调用一些stop()成员函数来设置标志并发送数据报。
class ExamplePacketListener : public osc::OscPacketListener {
protected:
virtual void ProcessMessage( const osc::ReceivedMessage& m,
const IpEndpointName& remoteEndpoint )
{
(void) remoteEndpoint; // suppress unused parameter warning
try{
// example of parsing single messages. osc::OsckPacketListener
// handles the bundle traversal.
if( std::strcmp( m.AddressPattern(), "/oscMasterSend" ) == 0 ){
// example #1 -- argument stream interface
osc::ReceivedMessageArgumentStream args = m.ArgumentStream();
bool a1;
args >> a1 >> osc::EndMessage;
NSLog(@"%d",a1);
}
}
}
};