调试停止后如何清除悬空的ServerSocket,无需重启matlab?

时间:2012-09-19 13:47:11

标签: java sockets matlab tcpserver

我有一些代码,如下所示,使用matlab的java套接字。我不认为解决方案需要特定于matlab ...

问题:如果我在socket可以被server_socket.close关闭之前点击debug-quit,它会保持悬空/打开状态。唯一可行的解​​决方法是停止并重新启动matlab,我猜这会破坏后台套接字。如果通过此功能保持打开,我怎样才能更一般地关闭ServerSocket?

function server_socket = my_server( opts ) 
    % Run the server, my_server.m
    import java.net.ServerSocket
    import java.io.*
    server_socket = ServerSocket(6001);
        server_socket.setSoTimeout(5000);
        io_socket = server_socket.accept(); 
        fprintf(1, 'Client connected\n');
          % DO STUFF 1
          BreakPointHere = 1; 
          % DO STUFF 2
        % clean up
        server_socket.close; % badness if 'dbquit' before this
        io_socket.close;

end

我已经尝试使用谷歌搜索,但我不太确定使用哪些关键字,并且有关于Java套接字的信息过载......

编辑:一种解决方案是将其设为脚本而不是功能(即删除第一行和最后一行')。这样,在debug debug之后server_socket仍然存在。但我想更好地理解套接字处理的位置,并且不希望所有其他变量必然存在。

0 个答案:

没有答案