我在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键盘上的按键,并且不会触发接收数据回调。所以我仍然不知道我是否做对了。