1

我在 OS X 上。我插入了一个 MIDI 键盘。在音频 MIDI 设置中,我将 MIDI 事件从键盘重定向到网络。它告诉我它正在使用端口 5004:

在此处输入图像描述

注意:请注意,我已将“谁可以连接我”设置为“任何人”,并且在“实时路由”中,我已将 MIDI 键盘路由发送到网络中。

现在从 C#/.NET 脚本(在我的 Unity3D 项目中),我尝试监听这个端口:

UdpClient udp;
udp = new UdpClient( 5004 ) // <-- SocketException: Address already in use

System.Object myObj = null;

udp.BeginReceive( 
        new AsyncCallback( UDP_IncomingData ), 
        myObj // udp_ep 
        );

static void UDP_IncomingData( IAsyncResult ar )
{
    Debug.Log( "GotData" );

    //Get the data from the response
    byte[] bResp = udp.EndReceive( ar, ref udp_ep );

    //Convert the data to a string
    string sResponse = Encoding.UTF8.GetString( bResp );

    //Display the string
    Console.WriteLine( sResponse );

    //Close the UDP connection
    udp.Close( );
}

我无法理解此错误消息。当然该端口正在使用中;MIDI 键盘应该从这个端口广播。

如何收听广播?

编辑:我现在认为我需要在新的未使用端口上创建 UDP 客户端,然后连接到我感兴趣的端口:

udp = new UdpClient( 0 ); // <-- http://stackoverflow.com/questions/2456773/find-a-free-port

udp.Connect( "192.168.0.13", 5004 );

所以现在它不会产生任何错误。但是我按下 MIDI 键盘上的键,接收数据回调没有触发。所以我仍然不知道我是否做对了。

4

0 回答 0