このコードを使用して、2 つのデバイス間でデータを転送します。
public void run() {
try {
Socket s = new Socket(myIpAddress, SERVERPORT);
// outgoing stream redirect to socket
OutputStream out = s.getOutputStream();
PrintWriter output = new PrintWriter(out);
output.println("DLS");
BufferedReader input = new BufferedReader(new InputStreamReader(
s.getInputStream()));
// read line(s)
String st = input.readLine();
// . . .
// Close connection
s.close();
} catch (UnknownHostException e) {
run();
e.printStackTrace();
} catch (IOException e) {
run();
e.printStackTrace();
}
}
私の問題は、最初にサーバーを起動する必要があり、その後、接続を成功させるためにクライアントを起動できることです。
の中に
public void run()
と に入れrun()
ましUnknownHostException
たIOException
。他のコードでは問題なく動作しますが、ここではStackOverFlowError
. 有限数で再試行し、X 秒ごとにのみ試行するようにするにはどうすればよいですか?
run()
ハンドルされていない例外を求めてThread.sleep(5000);
叫んだので、私はこの方法を試しました。サービスを開始すると、アプリがフリーズします。
public void run() throws UnknownHostException, IOException {
Socket s = new Socket(myIpAddress, SERVERPORT);
// outgoing stream redirect to socket
OutputStream out = s.getOutputStream();
PrintWriter output = new PrintWriter(out);
output.println("DLS");
s.close();
}
@Override
public void onCreate() {
for (int i = 0; i < 10; i++) {
try {
run();
break; // no exception: break out of the loop.
}
catch (IOException e) {
try {
Thread.sleep(5000);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}