C
Canaboca
Neues Mitglied
- 0
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
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: