Matlab中的非阻塞多播UDP端口

时间:2015-07-20 03:44:29

标签: java matlab sockets udp multicast

我需要在Matlab程序中添加UDP-Multicast端口接收器(监听器),该程序除了UDP端口外,还可以实时收集和处理来自其他两个(TCPIP)端口的数据。 Matlab具有用于单播UDP的内置UDP功能,具有回调函数(BytesAvailableFcn和DatagramReceivedFcn),允许快速和异步数据读取。不幸的是,Matlab中的Multicast UDP没有这样的功能。

以前在此论坛上发布了一个解决方案的Java解决方案:

void

此解决方案有效,但遗憾的是它会阻止其他功能。另一种简单但低效的解决方案是使用定时器功能。但是,使用某种BytesAvailableFcn或DatagramReceivedFcn回调(允许异步读取而不阻塞其他函数)会好得多。我是socket编程的新手,不幸的是,这部分Matlab-Java接口没有很好的文档记录。我尝试(到目前为止没有成功)通过打开一个新频道来构建回调函数:

socket = java.net.MulticastSocket(DEST_PORT);
socket.joinGroup (java.net.InetAddress.getByName(MCAST_ADDR));
socket.setReuseAddress (1);

packet = java.net.DatagramPacket(
        zeros(1, intmax('uint16'), 'int8'), intmax('uint16'));

while (true) {

    socket.receive(packet);  
}

并使用监听器功能:

new_channel =  
    javaMethod('open','java.nio.channels.DatagramChannel');

对于解决方法的任何建议,我将不胜感激。因为我是socket编程的新手,所以我会很感激详细的解答。 - 杰克。

0 个答案:

没有答案