Hi,
ich möchte eine Netzwerkverbindung aufbauen. Mittels TCP Server und Client, über Sockets eben.
Ich verschicke von meinem TCP Clienten mit out.writeUTF(..)
(out,das ist mein DataOutputStream) 3 Strings. Diese soll der Server empfangen, und ausgeben. Noch nicht einmal zurücksenden.
Das lustige ist jedoch, wenn der Server den ersten String empfängt, gibt er einen falschen String aus
und bei den restlichen, die ankommen sollten, schmeisst er eine exception java.io.EOFException.
Meine Ausgabe lautet vom Server:
Beim Clienten:
ERSTELLEN ERFOLGREICH (Gesamtzeit: 0 Minuten 0 Sekunden)
Meine Klassen:
Mein TCP Server:
Mein ServerThread
Mein TCP Client (befindet sich in anderem Projekt, tut aber eigtl. nichts zur Sache):
Den TCP Client rufe ich von einer anderen Klasse auf.
Meine Client Konsole doch wenigstens die Testausgabe "in login" ausgeben, oder?
Wo liegt mein Problem? Habe ich die 111 übersehen, oder was ist da los? Ich habe wirklich mal als Wert statt 10, eine 111 genommen. Aber die kann doch nicht solange gespeichert werden, oder?
Habe meinen Computer aus reiner Vorsicht nochmal neu gestartet, falls sich noch irgendwas in meinen Puffern o. ä. befindet.
Wäre super wenn ihr mir helfen könntet.
ich möchte eine Netzwerkverbindung aufbauen. Mittels TCP Server und Client, über Sockets eben.
Ich verschicke von meinem TCP Clienten mit out.writeUTF(..)
(out,das ist mein DataOutputStream) 3 Strings. Diese soll der Server empfangen, und ausgeben. Noch nicht einmal zurücksenden.
Das lustige ist jedoch, wenn der Server den ersten String empfängt, gibt er einen falschen String aus
und bei den restlichen, die ankommen sollten, schmeisst er eine exception java.io.EOFException.
Meine Ausgabe lautet vom Server:
Java:
run:
Verbindung Nr.1
111
java.io.EOFException
Beim Clienten:
ERSTELLEN ERFOLGREICH (Gesamtzeit: 0 Minuten 0 Sekunden)
Meine Klassen:
Mein TCP Server:
Java:
public class TCPServer {
public static void main(String args[]){
int anz=1;
try{
ServerSocket ss = new ServerSocket(7788);
while(true){
Socket sverb = ss.accept();
System.out.println("Verbindung Nr."+anz);
new ServerThread(sverb,anz).start();
anz++;
}
}
catch(Exception e){
System.out.println(e);
}
}
Mein ServerThread
Java:
public class ServerThread extends Thread {
private MonitorRemote mr;
private Socket sverb;
private int anz;
private DataInputStream in;
private DataOutputStream dout;
private PrintStream out;
ServerThread(Socket s, int z) {
this.sverb = s;
this.anz = z;
}
@Override
public void run() {
try {
in = new DataInputStream(sverb.getInputStream());
dout = new DataOutputStream(sverb.getOutputStream());
PrintStream out = new PrintStream(sverb.getOutputStream());
String s = null;
boolean q = true;
while (q) {
s = in.readUTF();
System.out.println(s);
// if (s.equals("10")) {
// login(in);
// q = false;
// }
}
sverb.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
Mein TCP Client (befindet sich in anderem Projekt, tut aber eigtl. nichts zur Sache):
Java:
public class TCPClient {
private String user;
private String pass;
private DataInputStream in;
private DataOutputStream out;
private Socket clientSocket;
public TCPClient(String host, int serverPort, String user, String pass) throws IOException {
this.user = user;
this.pass = pass;
this.clientSocket = new Socket(host, serverPort);
this.in = new DataInputStream(clientSocket.getInputStream());
this.out = new DataOutputStream(clientSocket.getOutputStream());
}
public void setUser(String user) {
this.user = user;
}
public void setPass(String pass) {
this.pass = pass;
}
public void write(String msg) throws IOException{
out.writeUTF(msg);
}
public void login() throws IOException {
System.out.println("in login");
out.writeUTF("10");
out.writeUTF(user);
out.writeUTF(pass);
out.close();
clientSocket.close();
}
}
Den TCP Client rufe ich von einer anderen Klasse auf.
Meine Client Konsole doch wenigstens die Testausgabe "in login" ausgeben, oder?
Wo liegt mein Problem? Habe ich die 111 übersehen, oder was ist da los? Ich habe wirklich mal als Wert statt 10, eine 111 genommen. Aber die kann doch nicht solange gespeichert werden, oder?
Habe meinen Computer aus reiner Vorsicht nochmal neu gestartet, falls sich noch irgendwas in meinen Puffern o. ä. befindet.
Wäre super wenn ihr mir helfen könntet.
Zuletzt bearbeitet: