Probleme mit Socket bei Android Studio?

Diskutiere Probleme mit Socket bei Android Studio? im Netzwerkprogrammierung Bereich.
platofan23

platofan23

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:
Robat

Robat

Mit was für einem Framework arbeitest du denn? socketio.Socket sagt mir jetzt spontan nichts.
 
platofan23

platofan23

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

X

Xyz1

Wieso machst du eigentlich aus eis y's und lässt viele nicht unwichtige Vokale weg? Hoffentlich doch keine legasthenie!:rolleyes:
 
Robat

Robat

Schon klar. Zeig doch mal den Code ;)

Edit: Bitte code in [code=Java]YOUR CODE[/code] posten
 
mihe7

mihe7

Kann es sein, dass Du die socketio.Socket-Geschichten in einem AsyncTask ausführen musst? Gibt das Android-Log (logcat) diesbezüglich was her?
 
platofan23

platofan23

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...
 
mihe7

mihe7

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();
}
 
platofan23

platofan23

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. :eek:
 
mihe7

mihe7

1. Wo hast Du einen PrintWriter benutzt?
2. Warum sollte das dann unter Java SE funktionieren?
 
mihe7

mihe7

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?
 
platofan23

platofan23

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?
 
Thema: 

Probleme mit Socket bei Android Studio?

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben