Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 停止OSC UDP侦听器功能。Xcode iOS应用程序_C++_C_Xcode_Udp_Osc - Fatal编程技术网

C++ 停止OSC UDP侦听器功能。Xcode iOS应用程序

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()点

我正在开发一个应用程序,通过UDP在主机程序和iPad之间发送OSC数据。从iPad发送到主机程序是相当直截了当的。然而,从iPad上的主机程序接收数据更麻烦

我已经到了一个地步,iPad正在接收数据,但却陷入了.run()数据包侦听器函数中。据我所知,.break()会中断函数并返回主程序,但它似乎不起作用

<>我在OSO环境中更熟悉Objto-C,所以这可能是我对C++的初步理解,让我失望。

下面的代码:(我一直在使用oscPack库生成此代码。可在此处获得:)

在我的主函数中(break()点似乎不起作用):

我的包侦听器类,非常类似于oscPack示例。经过一些参数修改。这是另一个我认为可能导致问题的领域。如果我的osc消息没有正确填充,它会停止返回run()函数吗

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);

        }
    }
}
};