Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android App Entwicklung

java.net.SocketException: Socket is closed

Das Thema "java.net.SocketException: Socket is closed" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 26.08.2011, 23:50   #1 (permalink)
Neuer Benutzer

Registriert seit: 18.08.2011
Beiträge: 12
Abgegebene Danke: 4
Erhielt 0 Danke für 0 Beiträge
Standard java.net.SocketException: Socket is closed

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(Datagra mSocket.java:604)
at java.net.DatagramSocket.receive(DatagramSocket.jav a:158)
at Android.Steuerung.Heizung.run(Heizung.java:158)
at java.lang.Thread.run(Thread.java:1096)

Hier mein Code
HTML-Code:
//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]
}

Geändert von Canaboca (27.08.2011 um 00:02 Uhr)
Canaboca ist offline   Mit Zitat antworten
Alt 27.08.2011, 10:06   #2 (permalink)
Android Experte
 
Benutzerbild von v Ralle v

Modell: Samsung Galaxy S2 mit CM9 | Asus Transformer Prime

Registriert seit: 27.08.2010
Beiträge: 782
Abgegebene Danke: 124
Erhielt 162 Danke für 128 Beiträge
Standard AW: java.net.SocketException: Socket is closed

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.
__________________
Auch ich freue mich, wenn man bei mir den DANKE Button drückt
PowerPoint OpenOffice Remote - Kostenlose App um PowerPoint, OpenOffice und LibreOffice fernzusteuern.
Shutdown Remote - Kostenlose App um seinen PC aus der Ferne herunterzufahren.
v Ralle v ist offline   Mit Zitat antworten
Antwort

Stichworte
socket is closed, socketexception

Themen-Optionen
Ansicht


Ähnliche Themen

Thema Autor Forum Antworten Letzter Beitrag
java.net.UnknownHostException lucaaAUT Android App Entwicklung 3 09.08.2011 17:00
Fehler: java.net socket exception nrwpeggy HTC Desire S Forum 1 02.08.2011 12:37
DroidCam socket error:socket is not connected germanytwo Sonstige Apps & Widgets 10 15.07.2011 18:08
JAVA vs .NET Kaeptn-G. Smalltalk und Offtopic 1 12.09.2010 16:28
.NET vs Java maho Smalltalk und Offtopic 3 12.07.2010 19:12




Du liest gerade: "java.net.SocketException: Socket is closed" unter "Android App Entwicklung" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.