0

我有一些类似下面的代码,使用 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 套接字存在信息过载......

编辑:一个解决方案是使它成为一个脚本而不是一个函数(即删除第一行和最后一个'end')。这样,在调试终止后 server_socket 仍然存在。但我想更好地了解处理套接字的位置,并且不希望所有其他变量都必须持续存在。

4

0 回答 0