Android Studio App Compile Fehler

  • Antworten:1
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 3

21.04.2019, 19:08:20 via Website

Hallo Zusammen,

ich bin ziemlich neu in der Android App programmierung und finde einfach meinen Fehler im Programm nicht, könnte wer drüber schauen und mir bitte helfen.
Das ganze ist in Android Studio mit Java programmiert und soll den String "C" an einen Server senden, wenn ein Button gedrückt wird.

package com.example.neuma.attentionplease;

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

import android.app.Activity;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

private Socket socket;
private static final int SERVERPORT = 8888;
private static final String SERVER_IP = "192.168.175.34";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    new Thread(new ClientThread()).start();
}

public void onClick(View view) {
    try {
        String str = "C";
        PrintWriter out = new PrintWriter(new BufferedWriter(
                new OutputStreamWriter(socket.getOutputStream())),
                true);
        out.println(str);
    } catch (UnknownHostException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

class ClientThread implements Runnable {
    public void run() {
        try {
            InetAddress serverAddr = InetAddress.getByName(SERVER_IP);
            socket = new Socket(serverAddr, SERVERPORT);
        } catch (UnknownHostException e1) {
            e1.printStackTrace();
        } catch (IOException e1) {
            e1.printStackTrace();
        }
    }
}

}

Danke im voraus für eure Hilfe

MfG
Thomas

Diskutiere mit!
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.479

22.04.2019, 09:03:21 via Website

Hallo Thomas,

in Android müssen alle Netzwerkoperationen asynchron ausgeführt werden.
Du nutzt zwar einen Thread zum erstellen des Sockets aber im onClick hast du keinen Thread mehr.
Das dürfte zu einer NetworkOnMainThread Exception führen. Zudem kann ein direktes zugreifen auf Ressourcen aus deinen Threads zwecks Synchronisierung etc. sehr schief gehen.
(Hierzu bitte mal den Log aus Logcat posten)

Du müsstest alls im ensprechenden ClientThread machen und diesem dann auch deinen String zum verschicken mitgeben. In Android bietet sich auch der AsyncTask dafür an.

Was willst du damit umsetzen?
Eine reine TCP Verbindung zu einem anderen Gerät?
Oder etwas anderes? Bitte mal dein Vorhaben erklären ;)

In solen Fällen ist es Ratsam, sich eine eigene Klasse zu bauen, welche den AsyncTask oder Thread verwaltet und man aus anderen Threads dann die passenden Methoden aufrufen kann.
Edit: Du schreibst CompileFehler postest aber keine Fehlermeldung o.ä. so können wir hier nichts machen

— geändert am 22.04.2019, 09:14:15

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Diskutiere mit!