From ffb38996e845d88ab01533f3d9d74cc03ecf1273 Mon Sep 17 00:00:00 2001 From: TimZnr Date: Tue, 7 Feb 2023 14:56:44 +0100 Subject: [PATCH] connectToWifi in Future --- .../example/lfrmobileapp/MainActivity.java | 47 +++++++++++++------ 1 file changed, 32 insertions(+), 15 deletions(-) diff --git a/MobileApp/app/src/main/java/com/example/lfrmobileapp/MainActivity.java b/MobileApp/app/src/main/java/com/example/lfrmobileapp/MainActivity.java index 8cbf830..3db5872 100644 --- a/MobileApp/app/src/main/java/com/example/lfrmobileapp/MainActivity.java +++ b/MobileApp/app/src/main/java/com/example/lfrmobileapp/MainActivity.java @@ -17,13 +17,17 @@ import com.example.lfrmobileapp.databinding.ActivityMainBinding; import java.io.DataOutputStream; import java.io.IOException; +import java.net.InetSocketAddress; import java.net.Socket; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; public class MainActivity extends AppCompatActivity { private ActivityMainBinding binding; private ExtendedSocket socket; - private DataOutputStream outputStream; private DataTransferAsyncTask dataTransferAsyncTask; Boolean connected = false; @@ -46,21 +50,29 @@ public class MainActivity extends AppCompatActivity { } public boolean connectToWifi(String ipAddress, int port){ - - new Thread(new Runnable(){ - public void run(){ - try { - Socket tempSocket = new Socket(ipAddress, port); - socket = new ExtendedSocket(tempSocket); - socket.sendMessage("Verbindung aufbauen"); - connected = true; - - } catch (Exception e) { - e.printStackTrace(); - connected = false; - } + ExecutorService executor = Executors.newSingleThreadExecutor(); + Future future = executor.submit(() -> { + Socket tempSocket = new Socket(); + tempSocket.connect(new InetSocketAddress(ipAddress, port), 1000); + try { + socket = new ExtendedSocket(tempSocket); + socket.sendMessage("Verbindung aufbauen"); + } catch (Exception e) { + socket.closeSocket(); + return false; } - }).start(); + return true; + }); + + try { + connected = future.get(); + } catch (InterruptedException e) { + System.err.println("InterruptedException: " + e.getMessage()); + } catch (ExecutionException e) { + System.err.println("ExecutionException: " + e.getCause().getMessage()); + } + + executor.shutdown(); if(connected){ dataTransferAsyncTask = new DataTransferAsyncTask(socket); @@ -70,5 +82,10 @@ public class MainActivity extends AppCompatActivity { return false; } } + + public void sendTelegram(String telegram) + { + this.dataTransferAsyncTask.writeTelegram(telegram); + } }