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