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: