Probleme mit Socket bei Android Studio?

platofan23

Mitglied
Hallo Communety,

Ich versuche mit Androidstudio eine Chat-App auf Basis von Java zu Programmieren.

Bisher hab ich eine Login-Aktivety erstellt. Nun versuche ich eine Socketverbindung aufzubauen und Daten zu einem Server zu vermitteln, den ich vorher schon genutzt habe. Nun bekomme ich diese Exception:

Code:
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: chat.chatclient, PID: 30824
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.io_OutputStream java.net.Socket.getOutputStream()' on a null object reference
        at socketio.Socket.write(Socket.java:187)
        at chat.chatclient.Login.onClick(Login.java:52)
        at android.view.View.performClick(View.java:5646)
        at android.view.View$PerformClick.run(View.java:22473)
        at android.os.Handler.handleCallback(Handler.java:761)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:156)
        at android.app.ActivityThread.main(ActivityThread.java:6523)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:942)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832)

Weiß einer was ich da tun muss?

Datein liegen hier als txt

https://we.tl/t-vXltVk4z68

LG

Platofan23
 
Zuletzt bearbeitet von einem Moderator:
Wäre glaub ich mal ganz interessant, ja
ja schon dar. nun ich hab das jetzt mit dem normales sockets und out/inputstream gemacht. dazu brauchte ich ein thread aber nun wird der server eine exception:
Exception in thread "Thread-3" java.lang.StringIndexOutOfBoundsException: String index out of range: -4
at java.lang.String.substring(String.java:1967)
at Server$ClientHandler.run(Server.java:37)
at java.lang.Thread.run(Thread.java:748)

das komische ist nur in java funktioniert es und android studio nicht...
 

Anhänge

Wieso machst du eigentlich aus eis y's und lässt viele nicht unwichtige Vokale weg? Hoffentlich doch keine legasthenie!🙄
 
Kann es sein, dass Du die socketio.Socket-Geschichten in einem AsyncTask ausführen musst? Gibt das Android-Log (logcat) diesbezüglich was her?
 
Kann es sein, dass Du die socketio.Socket-Geschichten in einem AsyncTask ausführen musst? Gibt das Android-Log (logcat) diesbezüglich was her?
hmm da kenn ich leider nicht mit aus aber ich habe noch bei
Java:
10/23 20:12:26: Launching app
$ adb install-multiple -r -t -p chat.chatclient C:\Users\Joel-Pc\AndroidStudioProjects\ChatClient\app\build\intermediates\split-apk\debug\slices\slice_1.apk
Split APKs installed in 1 s 868 ms
$ adb shell am start -n "chat.chatclient/chat.chatclient.Login" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Client not ready yet..Waiting for process to come online
Waiting for process to come online
Connected to process 10826 on device huawei-bln_l21-YTRDU17413000440
Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page.
I/hwaps: JNI_OnLoad
I/HwSecImmHelper: mSecurityInputMethodService is null
I/HwSecImmHelper: mSecurityInputMethodService is null
I/System.out: /l d:g
I/System.out: Antwort: /l:false
I/TextInputLayout: EditText added is not a TextInputEditText. Please switch to using that class instead.
I/HwPointEventFilter: do not support AFT because of no config
I/art: Do partial code cache collection, code=18KB, data=27KB
    After code cache collection, code=18KB, data=27KB
I/art: Increasing code cache capacity to 128KB
I/TextInputLayout: EditText added is not a TextInputEditText. Please switch to using that class instead.
I/HwPointEventFilter: do not support AFT because of no config
I/art: Do partial code cache collection, code=44KB, data=54KB
    After code cache collection, code=44KB, data=54KB
    Increasing code cache capacity to 256KB
I/TextInputLayout: EditText added is not a TextInputEditText. Please switch to using that class instead.
I/HwPointEventFilter: do not support AFT because of no config
W/IInputConnectionWrapper: reportFullscreenMode on inexistent InputConnection
E/HW-JPEG-DEC: [HME_JPEG_DEC_Delete](3321): HME_JPEG_DEC_Delete: decoder_ctx=null
E/HW-JPEG-DEC: [HME_JPEG_DEC_Delete](3321): HME_JPEG_DEC_Delete: decoder_ctx=null
E/HW-JPEG-DEC: [HME_JPEG_DEC_Delete](3321): HME_JPEG_DEC_Delete: decoder_ctx=null
I/TextInputLayout: EditText added is not a TextInputEditText. Please switch to using that class instead.
I/HwPointEventFilter: do not support AFT because of no config
I/System.out: /l d:g
I/System.out: Antwort: /l:false
W/IInputConnectionWrapper: reportFullscreenMode on inexistent InputConnection

Diese Meldungen da stehen, wo ich nicht weiß ob es daran hängt und das logcat ist ewig lange...
 
Probier in Login#onClick(View) einfach mal (ungetestet):
Java:
@Override
public void onClick(View v) {
    new AsyncTask<Void, Void, String>() {
        @Override protected Void doInBrackground(Void ... params) {
            try { 
                Client c = new Client();
                Socket s = c.getSocket();
                if (!s.connect()) { return "Keine Verbindung"; }
                s.write("/l benutzer passwort"); // natürlich ersetzen!
                String response = s.readLine();
                s.close();
                return "Antwort: " + response;
            } catch (IOException ex) {
                ex.printStackTrace();
                return "Exception:  " + ex.getMessage();
            }
        }
        @Override protected void onPostExecute(String resp) {
            Toast.makeText(Login.this, resp, Toast.LENGTH_LONG).show();
        }
    }.execute();
}
 
Kann es sein, dass Du die socketio.Socket-Geschichten in einem AsyncTask ausführen musst? Gibt das Android-Log (logcat) diesbezüglich was her?

Hab den Fehler gefunden. Ich hab ja einen Printwriter benutzt und wenn ich nun sage socket.println(Nachricht) darf ich nicht noch ein "\n" am Ende einfügen. Das macht den String zu lang und ergibt die Exception. 😱
 
Das gibt doch keinen Sinn: wieso solltest Du bei s.write() eine NullPointerException bekommen, weil Du irgendwo einen BufferedReader hernimmst? Wir reden schon noch von der eingangs verwendeten Klasse socketio.Socket?
 
Das gibt doch keinen Sinn: wieso solltest Du bei s.write() eine NullPointerException bekommen, weil Du irgendwo einen BufferedReader hernimmst? Wir reden schon noch von der eingangs verwendeten Klasse socketio.Socket?

Nicht mehr. Ich hab das auf das normale Socket angeändert mit output stream usw. und das habe ich vorher schon mal erwähnt dann...oder bin ich so dämlich und hab es wieder vergessen?
 

Neue Themen


Zurück
Oben