0
我想在android java代码一个TCP客户端。大多数工作正常。但我有一个问题。如果套接字已连接并且remeote主机关闭或网络关闭或其他事件,则socket.getinputstream始终阻塞。Android,Java,套接字,确定远程主机断开连接
我不知道套接字是否仍然连接。我在Objective-C编码,并在Objective-C我得到的事件,套接字强制关闭,我可以尝试重新连接。所以在目标c上,套接字跟踪状态。
在java中,套接字和输入流仍然连接或阻塞,即使套接字已关闭。我如何检查套接字是否仍然连接?
@Override
protected Void doInBackground(String... params) {
try {
String host = params[0];
int port = Integer.parseInt(params[1]);
SocketAddress sockaddr = new InetSocketAddress(host, port);
Socket socket = new Socket();
socket.connect(sockaddr,5000);
socket.setSoTimeout(7000);
out = new PrintWriter(socket.getOutputStream(), true);
mBufferIn = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while (mRun) {
try {
-----> mServerMessage = mBufferIn.readLine();
}catch (Exception e){
Log.d("my","hier3" + e.getMessage());
}
if (mServerMessage.trim() != null) {
sender.messageReceived(s2);
}else{
}
}
}
} catch (UnknownHostException e
) {