C#/。NET接收UDP数据包

时间:2013-11-07 16:38:06

标签: networking udp midi udpclient

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

enter image description here

注意:请注意:我已经将“谁可以将我连接到'任何人”,并且在“实时路线”中,我已将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键盘上的按键,并且不会触发接收数据回调。所以我仍然不知道我是否做对了。

0 个答案:

没有答案