我在Java应用程序中有一个服务器套接字连接。我把它连接到matlab脚本中的客户端套接字连接。如果我启动服务器然后启动客户端,我可以让它工作正常。但是,如果我断开客户端并尝试再次启动客户端,它将无法重新连接。如何检测服务器端套接字的断开连接,以重置连接。
服务器端(Java)
boolean ss = false;
while(true){
try{
ServerSocket listener = new ServerSocket(9090);
Socket socket = listener.accept();
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
while(!ss){
if (files != null){
for( int i = 0; i < files.length; i++ )
{
out.println(files[i].getCanonicalPath());
}
files = null;
}
ss = out.checkError();
}
}
catch( IOException e)
{}
finally{
listener.close();
socket.close();
}
}
客户端(matlab)
function filenameclient
tcpipClient = tcpip('127.0.0.1',9090,'NetworkRole','Client');
set(tcpipClient,'InputBufferSize',7688);
set(tcpipClient,'Timeout',30);
fopen(tcpipClient);
while(1)
if (tcpipClient.BytesAvailable > 0)
rawData = fread(tcpipClient,tcpipClient.BytesAvailable);
fprintf('FileName: %s\n',rawData);
end
end
fclose(tcpipClient);
end
我知道fclose
永远不会被调用,但是在停止matlab客户端后我从控制台调用它。