Hallo liebes Forum und liebe Mitglieder,
glaich vorweg: Ich habe dasselbe Problem schon bei chip.de beschrieben, dort wurde ich allerdings auf ein größeres php-Forum verwiesen, weil man mir leider nicht weiterhelfen konnte.(http://forum.chip.de/php-mysql-etc/s...a-1432856.html)
Nun zu meinen Problemen:
Ich versuche, einen NCID-Server abzufragen(läuft auf meinem Router). Ich habe mit Java ein Programm geschrieben, das wunderbar die Daten abfrägt und auch per "System.out" ausgibt.
Da das alles auf einem Server laufen und in Datenbanken gespeichert werden soll, wollte ich die Daten an ein php-Script übergeben. Mein erstes Problem war, wie man die Daten übergibt. Ich habe bis jetzt nur die Möglichkeit gefunden, vom Java-Programm per loopback auf "localhost" ein Script aufzurufen und die Daten mit dem Query-Teil der URL zu übergeben. Allerdings würde dabei meines Wissens der gesamte Vorgang über die Netzwerkkarte verkehren, was nicht wirklich Zeit/Ressourcen sparend wäre. Auch könnte man dabei sehr leicht die Daten manipulieren.
Gegooglet gab ich schon nach "Interaktion Java php" und weiteren Kombinationen. Es kann natürlich sein, dass ich mich zu dumm angestellt habe und einfach nicht das passende Stichwort verwendet habe, dann tut es mir Leid, dass ich euch bemühen musste, aber mir ist nichts weiteres mehr eingefallen.
Ich habe dann versucht, die Port-Abfrage über php zu realisieren. Bei Java wird das sehr leicht über die Klasse "Sockets" erledigt, bei der man nur IP-Adresse, Port-Nummer eingeben muss und dann gleich den InputStream abhören kann.
Bei php gibt es auch die "socket_"-Funktionen. Allerdings bin ich damit leider nicht wirklich klar gekommen. Ich habe mir bei php.net die Rubrik durchgelesen, bin dabei auch auf folgendes Beispiel gestoßen: http://de2.php.net/manual/de/sockets.examples.php
Ich habe es übernommen(natürlich IP-Adresse geändert) und ausgetestet. Sowohl bei 127.0.0.1, als auch bei der Router-IP wird die Seite nie fertig geladen. Es stand immer nur "Warten auf localhost..." da(Localhost deswegen, weil ich es über XAMPP auf meinem Rechner getestet habe).
Fehlermeldungen werden leider keine produziert. Beim kam folgende Fehlermeldung:
"Warning: socket_bind() [function.socket-bind]: unable to bind address [0]: Die angeforderte Adresse ist in diesem Kontext ungültig. [...] on line 19"
Folgendes Script habe ich selber geschrieben und auch ausprobiert:
Auch hier wird das Laden der Seite nicht beendet, also selber Fehler, wie oben!
Ich lasse auch gleichzeitig mittels WireShark den Port prüfen. Bei der Java-Version werden Pakete verschickt. Bei php überhaupt nicht.
Ich würde auch nur wenn es gar nicht anders möglich wäre, das Programm mit Perl/CGI zu schreiben, da ich mich in den beiden Programmiersprachen erst zurecht finden müsste. Als letzte Möglichkeit bliebe dies allerdings offen!
Zusammengefasst:
Gibt es bei meinem Ansatz einen Denkfehler oder sind die "socket"-Funktionen noch nicht ausgereift, was auch für die undokumentierte Funktion "socket_recv" sprechen würde?
Oder:
Gibt es eine elegantere Lösung als loopback, mittels Java ein php-Script aufzurufen?
Und zu guter Letzt:
XAMPP 1.7.3
PHP 5.3.1
error_reporting(E_ALL) in beiden Funktionen
Rechtschreibfehler sind auszuschließen(IP-Adressen und Portnummern mehrmals kontrolliert, Rechtschreibfehler bei Funktionen würden Parse_Errors ergeben)
Vielen Dank schon einmal für die Mühe und natürlich die Antworten!
Liebe Grüße und einen schönen Abend noch
BioLauri
glaich vorweg: Ich habe dasselbe Problem schon bei chip.de beschrieben, dort wurde ich allerdings auf ein größeres php-Forum verwiesen, weil man mir leider nicht weiterhelfen konnte.(http://forum.chip.de/php-mysql-etc/s...a-1432856.html)
Nun zu meinen Problemen:
Ich versuche, einen NCID-Server abzufragen(läuft auf meinem Router). Ich habe mit Java ein Programm geschrieben, das wunderbar die Daten abfrägt und auch per "System.out" ausgibt.
Da das alles auf einem Server laufen und in Datenbanken gespeichert werden soll, wollte ich die Daten an ein php-Script übergeben. Mein erstes Problem war, wie man die Daten übergibt. Ich habe bis jetzt nur die Möglichkeit gefunden, vom Java-Programm per loopback auf "localhost" ein Script aufzurufen und die Daten mit dem Query-Teil der URL zu übergeben. Allerdings würde dabei meines Wissens der gesamte Vorgang über die Netzwerkkarte verkehren, was nicht wirklich Zeit/Ressourcen sparend wäre. Auch könnte man dabei sehr leicht die Daten manipulieren.
Gegooglet gab ich schon nach "Interaktion Java php" und weiteren Kombinationen. Es kann natürlich sein, dass ich mich zu dumm angestellt habe und einfach nicht das passende Stichwort verwendet habe, dann tut es mir Leid, dass ich euch bemühen musste, aber mir ist nichts weiteres mehr eingefallen.
Ich habe dann versucht, die Port-Abfrage über php zu realisieren. Bei Java wird das sehr leicht über die Klasse "Sockets" erledigt, bei der man nur IP-Adresse, Port-Nummer eingeben muss und dann gleich den InputStream abhören kann.
Bei php gibt es auch die "socket_"-Funktionen. Allerdings bin ich damit leider nicht wirklich klar gekommen. Ich habe mir bei php.net die Rubrik durchgelesen, bin dabei auch auf folgendes Beispiel gestoßen: http://de2.php.net/manual/de/sockets.examples.php
Ich habe es übernommen(natürlich IP-Adresse geändert) und ausgetestet. Sowohl bei 127.0.0.1, als auch bei der Router-IP wird die Seite nie fertig geladen. Es stand immer nur "Warten auf localhost..." da(Localhost deswegen, weil ich es über XAMPP auf meinem Rechner getestet habe).
Fehlermeldungen werden leider keine produziert. Beim kam folgende Fehlermeldung:
"Warning: socket_bind() [function.socket-bind]: unable to bind address [0]: Die angeforderte Adresse ist in diesem Kontext ungültig. [...] on line 19"
Folgendes Script habe ich selber geschrieben und auch ausprobiert:
PHP-Code:
<?php
error_reporting(E_ALL);
$server = socket_create(AF_INET,SOCK_RAW,SOL_UDP);
socket_connect($server,"/*IP-Adresse*/",/*Post*/);
socket_listen($server,5);
socket_accept($server);
echo socket_read($server,90);
?>
Ich lasse auch gleichzeitig mittels WireShark den Port prüfen. Bei der Java-Version werden Pakete verschickt. Bei php überhaupt nicht.
Ich würde auch nur wenn es gar nicht anders möglich wäre, das Programm mit Perl/CGI zu schreiben, da ich mich in den beiden Programmiersprachen erst zurecht finden müsste. Als letzte Möglichkeit bliebe dies allerdings offen!
Zusammengefasst:
Gibt es bei meinem Ansatz einen Denkfehler oder sind die "socket"-Funktionen noch nicht ausgereift, was auch für die undokumentierte Funktion "socket_recv" sprechen würde?
Oder:
Gibt es eine elegantere Lösung als loopback, mittels Java ein php-Script aufzurufen?
Und zu guter Letzt:
XAMPP 1.7.3
PHP 5.3.1
error_reporting(E_ALL) in beiden Funktionen
Rechtschreibfehler sind auszuschließen(IP-Adressen und Portnummern mehrmals kontrolliert, Rechtschreibfehler bei Funktionen würden Parse_Errors ergeben)
Vielen Dank schon einmal für die Mühe und natürlich die Antworten!
Liebe Grüße und einen schönen Abend noch
BioLauri
Kommentar