我有一些类似下面的代码,使用 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 仍然存在。但我想更好地了解处理套接字的位置,并且不希望所有其他变量都必须持续存在。