Hallo,
ich versuche seit einigen Tagen eine Verbindung zu einem in Java Programmierten Ticker herzustellen. Leider kenne ich mich mit Java nicht aus und bin was Delphi anbelangt eher ein einsteiger.
Nun zum Problem:
Ein in Java geschriebenes Programm öffnet eine Socket Verbindung über ein bestimmten Port und wartet dort auf verbindung.
Wenn ein Client sich dort connectiert und ein String in UTF8 Modus sendet zb. 'gettext' dann sendet dieser Java Server ebenfalls einen String zurück.
Nun versuche ich über Delphi ein Programm zu schreiben der sich mit diesem Server sich verbindet und diesen String sendet und empfängt.
Die Verbindung zu dem Java Server bekomme ich hin, aber egal wie ich versuche zu senden, der Server bekommt davon nichts mit.
Hier ist der ABschnitt zum Anfordern des Texts vom Ticker in Java:
***********
if (income.startsWith("/@gettext")){
DataOutputStream dd = new DataOutputStream(s1.getOutputStream());
dd.writeUTF(txtField.getText());
}
Du musst in UTF Format den String "/@gettext" zuschicken auf Port: 1234
***********
Was mir auffällt sofern ich es interpretieren kann, wird ein String als Stream gesendet und empfangen.
Wie würdet ihr das in Delphi umsetzen, ich habe es folges vergeblich versucht.
zb. über ClientSocket.Socket.SendText einen String zu senden vorher sogar mit utf8encode (string); diesen umgewandelt, ohne erfolg.
ferner versuchte ich es mit Client.Socket.SendStream(FileStream);
den String aus einer Datei zu senden, hat leider auch nicht geklappt.
Dieser Java Server bekommt einfach nicht mit, egal was ich versuch ihm zu senden.
Ich weis auch nicht ob die Socket-Verbindung asynchron sein muß, habe aber beides getestet.
Übrigens der Java Server funktioniert, denn mit einem Client Program der auch in Java geschrieben wurde funktioniert alles.
Hier der Auszug von diesem Java Client:
***************
import java.net.*;
import java.io.*;
import javax.swing.*;
public class Client {
public static void main(String[] args) throws
Exception {
// final String rechner =
// JOptionPane.showInputDialog("Bitte Ticker-Server eingeben");
// final String port =
// JOptionPane.showInputDialog("Bitte Port eingeben");
// Socket s1 = new Socket(rechner, Integer.parseInt(port));
Socket s1 = new Socket("
localhost", 1234);
DataOutputStream dos = new DataOutputStream(s1.getOutputStream());
dos.writeUTF("/@speed01");
dos.close();
s1.close();
}
}
**************
Zu Testzwecken wurde dieser Server sogar so ummodifizert das egal was als String gesendet wird, er diesen einfach nur auf den Bildschirm wieder ausgibt, um zu prüfen ob überhaupt etwas vom Server empfangen wird. Bislang habe ich es nicht geschaftft das er überhaupt etwas empfangen hat. Wie müßte
DataOutputStream dos = new DataOutputStream
in Delphi heißen?
Könnt Ihr mir da weiter helfen ?
[edit=MrSpock]Zweiten gleichlautenden Beitrag gelöscht. Mfg, MrSpock[/edit]