Entwickler-Ecke

Internet / Netzwerk - Indy Problem


gala - Di 01.07.03 09:58
Titel: Indy Problem
Hallo Leute,

ich habe Server in Delphi geschrieben(TIdTCPServer). Client ist bei mir in JAVA geschrieben. Also, wenn ich was an Server schicke, wird OnExecute-Ereigniss ausgelöst. Bei mir muss es so sein:

1. Client schickt Daten: An Server wird Server.OnExecute := ServerExecute; ausgelösst.
2. Aus dieser Methode(ServerExecute) wird andere Methode aufgerufen. Hier ist Code von ServerExecute:
//alle Daten werden in rec gespeichert
rec.add(AThread.Connection.AllData);
//Rückgabewert von test wird in ergebniss gespeichert
ergebniss := test(rec);

//Hier schicke ich das Ergebniss zurück (aber funktioniert nicht)
AThread.Connection.OpenWriteBuffer;
AThread.Connection.WriteBuffer(ergebniss.DataString,SizeOf (ergebniss.DataString),true);
AThread.Connection.CloseWriteBuffer;

3. Jetzt muss ich eigentlich dieses Ergebniss an Client zurückschicken und das klappt nicht :(

Das Problem ist vielleicht, dass Client in JAVA geschrieben ist, hier ist Code:

Socket con = new Socket("localhost", 4000);
PrintWriter out = new PrintWriter(new OutputStreamWriter
(con.getOutputStream()));
BufferedReader in = new BufferedReader(new InputStreamReader
(con.getInputStream() ) );

out.write("1");
out.flush();
char[] b = new char[5];
in.read(b);
con.close();

Wenn ich die Zeile "in.read(b)" wegmache, dann wird die Methode(ServerExecute) bis Ende gemacht, aber ich kriege dann das Ergebniss nicht. Mit dieser Zeile bleibt das hängen, Client wartet, bis Server irgendwas schickt.

Was soll ich dann machen? In TIdTCPServer gibt es kein Ereigniss OnClientRead oder so was ähnliches :(

Danke im Voraus

Gala