ServerSocket unter Windows XP

philBerlin

Mitglied
Hallo Leute,

ich versuche vergeblich eine Socket Verbindung aufrechtzuerhalten. Ich bekomme leider unter Windows XP die folgende Fehlermeldung:

Code:
java.net.SocketException: socket closed
        at java.net.PlainSocketImpl.socketAccept(Native Method)
        at java.net.PlainSocketImpl.accept(Unknown Source)
        at java.net.ServerSocket.implAccept(Unknown Source)
        at java.net.ServerSocket.accept(Unknown Source)
        at Server.listen(Server.java:11)
        at Server.main(Server.java:23)

Unter Linux läuft das ganze einwandfrei. Dachte dann es hat was mit der Firewall zu tun, hab diese dann deaktiviert, leider ohne Erfolg...

Weiß jemand was da los ist?

Viele Grüße
Phil

SourceCode:

Server.java

Code:
import java.net.*;
import java.io.*;

public class Server {

  public static void listen() {
    try {
      ServerSocket ss = new ServerSocket(30000);

      while (true) {
        Socket s = ss.accept();
        new Kanal(s).start();
      }
    }
    catch (IOException e) {
      System.err.println("Verbindungsfehler");
      e.printStackTrace();
      System.exit(1);
    }
  }

  public static void main(String[] args) {
    listen();
  }

}

Kanal.java

Code:
import java.net.*;
import java.io.*;

public class Kanal extends Thread {
  private Socket sock;

  public Kanal(Socket s) {
      this.sock = s;
  }

  public void run() {
    try {
      DataInputStream empfangeText = new DataInputStream(sock.getInputStream());
      String text = empfangeText.readUTF();
      if (text.matches("exit")) {
        System.out.println("Gegenseite hat die Verbindung beendet.");
        System.exit(0);
      }
      else
        System.out.println("Daten empfangen: " +text);
      try {Thread.sleep(10000);}catch(Exception e){};
      DataOutputStream sendeText = new DataOutputStream(sock.getOutputStream());
      sendeText.writeUTF(text.toUpperCase());
      System.out.println("Daten gesendet: " + text.toUpperCase());
      sock.close();
    }
    catch (IOException e) {
      System.err.println("Verbindungsfehler");
      System.exit(1);
    }
  }
}

Client.java

Code:
import java.net.*;
import java.io.*;
import java.util.*;

public class Client {

  private static String lese() {
    try {
      System.out.print('\n' + " > ");
      BufferedReader inData = new BufferedReader(new InputStreamReader(System.in));
      String dat = inData.readLine();
      if (dat.trim().matches("")) return "";
      return dat;
    }
    catch (IOException ioe) {
      System.out.println(ioe);
      String s = "error: " + ioe;
      return s;
    }
  }

  private static void benutze(String cmd) {
    try {

      if (cmd.matches("cmd")) {
        System.out.println('\n' +
                           "cmd                     - this page");
        System.out.println("exit                    - exit");
      }
      else {
        new Listen(cmd).start();
      }
      benutze(lese());
    }
    catch (NullPointerException npe) {
      System.out.println(npe);
      benutze(lese());
    }
  }

  private static void welcome() {
    System.out.println('\n' + "type cmd for commandlist");
  }

  public static void main(String[] args) {
    welcome();
    benutze(lese());
  }
}

Listen.java

Code:
import java.net.*;
import java.io.*;

public class Listen extends Thread {
  private String data;

  public Listen(String str) {
    this.data = str;
  }

  public void run() {
    try {
      Socket s = new Socket("localhost", 30000);
      DataOutputStream sendeText = new DataOutputStream(s.getOutputStream());
      sendeText.writeUTF(data);
      if (data.matches("exit")) System.exit(0);
      DataInputStream empfangeText = new DataInputStream(s.getInputStream());
      String text = empfangeText.readUTF();
      System.out.println('\n' + text);
      System.out.print('\n' + " > ");
      s.close();
    }
    catch (UnknownHostException e) {
      System.err.println("Host konnte nicht gefunden werden.");
      System.exit(1);
    }
    catch (IOException e) {
      System.err.println("Es konnte keine Verbindung aufgebaut werden.");
      e.printStackTrace();
      System.exit(1);
    }
  }
}
 
Sehr merkwürdig, das ganze läuft auch auf Windows XP Home Edition...

...vermute nun langsam, dass mein Rechner hier ein spezifisches Problem hat.

Is ja mal wieder zum Mäusemelken
 
Zurück