• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Datenübertragung mit PHP?

Ich möchte Daten von einem Rechner zu einem anderen übertragen. Wobei die Daten hauptsächlich Strings sind. Ein freund meinte ich bräuchte dafür die IP-Adresse des Empfängers. Wie ich das weitere dann jedoch bewerkstellige und wie ich die IP-Adresse in erfahrung bringe wusste er jedoch nicht.
Mir ist die Idee gekommen, das alles über eine Datenbank laufen zu lassen. Doch würde dieses die Site ziemlich bremsen.

Schon mal besten Dank für jeden Vorschlag bzw. jede Lösung im Vorraus!!
 
die ip adresse kannst du, falls du das php script von apache aus laufen laesst, mit $_SERVER['REMOTE_ADDR'] kriegen, falls mir richtig in Errinerung ist.
Du kannst dann eine Verbindung mit fsockopen (ip,port, fehlernummber, fehler, 30(timeout in s)) machen und mit fputs daten in die verbindung eintragen.
Mit fgets kannst du die Antwort auslesen.

Dein Script auf dem client wuerde also so aussehen:

Code:
$string = "den string den ich senden will";
$errornr = NULL;
$error = NULL
$port = 55; //irgendein port
$ip = $_SERVER['REMOTE_ADDR'];
$connection = fsockopen($ip,$port,$errornr, $error,30);
echo $errornr.": ".$error;
fputs($connection, $string);
echo fgets($connection);

Das Problem ist natuerlich der server.
Du musst da staendig ports abhoeren.
Das ist aber allein mit php eigentlich nicht realisierbar.
Du muessest ein eigenes programm fuer den server bauen oder den apache geschickt nutzten.
Ich persoenlich wuerde einfach vom client aus eine mysql Verbindung auf den server machen und dann den String in eine Datenbank schreiben, ist auch viel einfacher.
 
OP
8

811

Das heißt, als "empfänger" kann ich dann die variable $connection einfach benutzen?
Wenn ich das jetzt richtig verstanden habe kann beispielsweise der nutzer A irgendwann etwas losschicken und der nutzer B, der empfänger, bestimmt dann den zeitpunkt wann er dies empfängt?

Wie ist das denn mit fopen()?? ist die funktions weise entwa gleich oder komplizierter?

Aber auf jeden Fall einmal danke!!
 
Nun, nicht ganz.

Hier das grundlegende Prinzip von Sockets.
Es gibt zwei Arten von Sockets - Server und Client- Sockets.
Der Client ist ungefaer was ich in meinem Beitrag geschrieben habe.
Der Server folgt weiter unten.
In einem Netzwerk mit TCP/IP Standard wie dem Internet hat jeder Anschluss eine IP Adresse.
Ein Socket dient dazu auf Daten mit einem anderen Teilnehmer eines TCP/IP Netzwerkes Daten auszutauschen.

Um nun erst eine Verbindung mit dem anderen Teilnehmer musst du seine IP Adresse wissen.
Das ist genau das was du mit der Funktion fsockopen machst.
Als ersten Parameter uebergibst du die IP des Teilnehmers, als zweiten den Port.
Ports sind eine Art Identifikationsnummern fuer verschiedene Aufgaben, damit ein Teilnehmer(in diesem Falle ein Server) auch verschiedene Aufgaben wahrnehmen kann.
Webseiten ansehen geht z. B. ueber Port 80.
Email senden ueber Port 25, Telnet Port 23, Email empfangen 110 usw..., es gibt noch sehr viele solche Ports.
Sobald der Empfaenger die Verbindung entgegengenommen hat kannst du irgendetwas senden, in unserem Beispiele mit fputs, was er dann mit fgets auslesen kann.
Was du dan beim client mit fputs($connection) in die Verbindung reintust,
kannst du dann mit fgets() beim server auslesen.

Der Server:
Der Server wartet die ganze Zeit auf eine solche ankommende Verbindung, da ja sonst niemand eine solche Verbindung akzeptieren koennte.
Dazu erstellt er einen Socket und bindet den an einen Bestimmten Port.
Nun macht man eine Schleife und prueft jedesmall in dieser Schleife, ob irgendjemand eine Verbindung beantragt hat auf dem besagten Port.
Wenn ja, dann kann man diese akzeptieren oder ablehnen und dann serverseitig Daten aus der Verbindung auslesen und auch reinschreiben.

Eigentlich ist es das gleiche Prinzip wie mit dem Telefon:
Du brauchst schnell eine Nummer und rufst die Auskunft an.
Die Dame an der Auskunft wartet die ganze Zeit auf diese Anfrufe und nimmt dan das Telephon ab.
Der Client (Kunde) waerst du, der Server waere sie.


Als Empfaenger wirds dann etwas komplizierter, da du ja auf eine ankommende Verbindung warten musst, vor allem mit Php, da php eigentlich gar nicht fuer so etwas geschaffen ist.

Hierzu ein Link fuer einen php server:

http://www.phpforum.de/archiv_26537_Tcpip@Verbindung@Phpserver@und@Phpclient_anzeigen.html


Aber da du das wahrscheinlich eher kompliziert findest, wuerde ich dir folgendens empfehlen:
Lase auf einem PC einen MySql Server laufen, der Dir die Arbeit abnimmt und Schreibe, bzw. lese von diesem die gewuenschten Datein aus, resp. schreibe sie rein.

Falls du nicht weisst wie man so was mit PHP macht kann ich dir gerne behilflich sein :D
 
chaebi schrieb:
Nun, nicht ganz.
Hier das grundlegende Prinzip von Sockets.
Es gibt zwei Arten von Sockets - Server und Client- Sockets.
Nun, nicht ganz.
Man kann aus einem Socketpaar allein nicht schließen, welche Seite Server und welche Client ist.
 
Ja, stimmt schon.
Der Unterschied liegt lediglich in der Art der Verbindungsaufnahme.
Der eine wartet, der andere Verbindet.
 
OP
8

811

Ok. Danke! Datenbanken sollte ich glaub ich ausreichend bedienen können. Aber für fach-fragen
komme ich gerne auf dieses angebot zurück ;-).
Gut...dann werde ich dass mal ausprobieren! Im Moment habe ich nicht allzuviel zeit..aber ich gebe rückmeldung :)
 
Oben