我尝试使用 android 上的套接字连接我的服务器。我希望它像这样工作;当我向服务器发送请求时,如果有响应,请调用我的响应函数。如果发生 500 毫秒的超时(将检查异常和我设置的布尔值),我想执行另一个函数。但是使用我使用的这段代码,当我向服务器发送一些东西并等待响应时,如果有响应,它会执行 onServerResponse 函数,并且在没有响应时不做任何事情(挂起)。如何编辑此代码,以便在没有响应时抛出超时异常?
boolean control = false;
try{
Socket socket = new Socket();
socket.setSoTimeout(500);
socket.connect(new InetSocketAddress(InetAddress.getByName(SERVER_IP),SERVER_PORT));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),"UTF-8"));
bw.write("asdasd\n");
bw.flush();
control = true;
int readInt = -1;
String read = null;
StringBuilder sb = new StringBuilder("");
while((readInt = socket.getInputStream().read()) != -1){
sb.append((char)readInt);
}
read = sb.toString();
if(read != null && read.trim().length() > 0){ onServerResponse(read); }
}catch(Exception e){ Log.v("Main", "GOT AN ERROR: "+e+control); }
问题已解决,答案见评论。