philBerlin
Mitglied
Hallo Leute,
ich versuche vergeblich eine Socket Verbindung aufrechtzuerhalten. Ich bekomme leider unter Windows XP die folgende Fehlermeldung:
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
Kanal.java
Client.java
Listen.java
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);
}
}
}