Java检查套接字是否已连接到客户端

时间:2014-04-03 19:16:12

标签: java matlab sockets tcp

我在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客户端后我从控制台调用它。

0 个答案:

没有答案