1. Nimm jetzt an unserem Geotel Note - Gewinnspiel teil - Informationen zum Note findest Du hier!
  1. Canaboca, 26.08.2011 #1
    Canaboca

    Canaboca Threadstarter Neuer Benutzer

    Hallo :))
    Ich suche schon seit Stunden den Fehler, doch ich komme einfach nicht weiter :((
    Wenn ich mein Wlan einschalte und dann von der Activity zurück möchte, bekomme ich andauern diese Exception:
    java.net.SocketException: Socket is closed
    at java.net.DatagramSocket.checkClosedAndBind(DatagramSocket.java:604)
    at java.net.DatagramSocket.receive(DatagramSocket.java:158)
    at Android.Steuerung.Heizung.run(Heizung.java:158)
    at java.lang.Thread.run(Thread.java:1096)

    Hier mein Code
    HTML:
    //wird in der onCreate methdode ausgeführt
     //wenn ich im WLAN netz drinnen bin, dann beginne ich Daten zu empfangen
      if(mobile.isConnected() == true) {
                //Log.d("network", "IST IM WLAN");
             sendData(REFRESH);
             startSniffing();
      }
     
    //starten des Threads;
     private void startSniffing(){
      if(!tt.isAlive()){
       try {
        receiveSocket = new DatagramSocket(empf_port);
           tt.start();
       }
       catch (SocketException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
       }
      } 
     }
    //stopen des Threads:
    private void stopSniffing(){
      if(tt.isAlive()){
       tt.stop();
       receiveSocket.close();
      }
     }
    //senden der Daten
    [LEFT]public void sendData(String data){
    try{
    DatagramSocket clientSocket = new DatagramSocket();
    InetAddress IPAddress;
    
    
    byte[] sendData = new byte[1024]; 
    sendData=data.getBytes();
    IPAddress = InetAddress.getByName("192.168.0.255");
    DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, server_port);
    clientSocket.send(sendPacket);
    Log.d("udp tutorial", "senden erfolgreich");
    
    clientSocket.close();
    }
    catch (SocketException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    catch (UnknownHostException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }[/LEFT]
    }
    //Erhalten der Daten:
     public void run() {
      // TODO Auto-generated method stub
      while(true) {
       try {
        byte[] buffer = new byte[1024];
        DatagramPacket p = new DatagramPacket(buffer, buffer.length);
        receiveSocket.receive(p);
        byte[] packet = new byte[p.getLength()];
        System.arraycopy(p.getData(), 0, packet, 0, packet.length);
        text = new String(packet, "UTF8");
        Log.d("Udp tutorial","message:" + text);
        Log.d("RECEIVE", "ERFOLGREICH");   
        handler.sendEmptyMessage(0);
       } 
        catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
       }
       catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
       }
      }
     }
     
    //wenn ich zurück switche rufe ich einfach die stopSniffing und stoppe den Thread
    public void onClick(View v) {[/LEFT]
    if(v.equals(zuruck)){[/LEFT]
    stopSniffing();[/LEFT]
    Intent in = new Intent(Heizung.this,AndroidSteuerung.class);[/LEFT]
    startActivity(in);[/LEFT]
    }
    
     
    Zuletzt bearbeitet: 27.08.2011
  2. v Ralle v, 27.08.2011 #2
    v Ralle v

    v Ralle v Android-Lexikon

    Also bei dem Code habe ich nicht ganz durchgeblickt, liegt vielleicht auch an der Formatierung.

    Meine Vermutung: du arbeitest mit einigen Threads und mehreren Sockets. Wenn du zurück willst, dann versucht ein Thread sicher noch Daten zu senden, obwohl das Socket schon geschlossen wurde. Überprüfe einfach mal, ob du wirklich alle Threads anhältst und die Sockets dann auch schließt. Wenn ich schon die eine Schleife sehe:

    Code:
    while(true){...}
    Dann bin ich mir ziemlich sicher, dass das Problem in die Richtung geht.
     
Die Seite wird geladen...
Ähnliche Themen - java net SocketException Forum Datum
java.lang.OutOfMemoryError bei StringBuilder.Append() Android App Entwicklung 05.03.2017
Problematik mit der Ausgabe von SQL Inhalten (ljava.lang) Android App Entwicklung 23.11.2016
Xamarin (C#) gleich gut wie Android Studio/Eclipse (Java)? Android App Entwicklung 22.09.2016
SntpClient.java für API 19 Android App Entwicklung 19.09.2016
Java(!) Resourcen + Android Studio Android App Entwicklung 16.09.2016
[ERLEDIGT] *.viivo kann keiner App zugeordnet werden - MANIFEST.XML ? Android App Entwicklung Freitag um 10:35 Uhr
Alarmbenachrichtigung bei lokaler Nachricht oder über iNet Android App Entwicklung 18.02.2017
Anomalie bei Bitmap-Transfer übers Netzwerk Android App Entwicklung 21.11.2016
Krieterien für die Evaluation eines Ad-Netzwerkes Android App Entwicklung 20.10.2016

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. android socketexception socket is closed