3 Stimmen

Zugriff auf mein Heimnetzwerk mit CURL

Diese Frage deckt in gewisser Weise sowohl ServerFault.com als auch hier, aber dies scheint mehr Programmierung als Server. Ich habe meinen Heimcomputer so eingerichtet, dass der Apache-Server läuft. Er antwortet auf Port 5900, der von meinem drahtlosen Router weitergeleitet wurde. Dann habe ich einen dynamischen DNS-Server eingerichtet, der ständig die IP-Adresse meines Heimnetzwerks aktualisiert. Ich weiß, dass dieser Teil funktioniert, denn ich habe einen anderen Computer in einem anderen drahtlosen Netzwerk verwendet und konnte die Indexseite meines Servers über MYURL.com:5900 aufrufen.

Mein Ziel ist es nun, eine Nachricht an meinen Heimserver zu senden. Ich habe ein Skript auf meinem Heimatserver geschrieben, das, wenn ich ihm eine POST-Nachricht sende, diese Nachricht in einer Datei speichert. Mit anderen Worten, die Abfolge der Ereignisse sollte wie folgt ablaufen:

  1. Ich melde mich auf meiner Webseite an, schreibe einen Text in ein Eingabefeld und drücke auf die Schaltfläche "Senden".
  2. Die Nachricht wird an den Server meiner Website weitergeleitet.
  3. Mein Server führt ein Skript aus, das CURL verwendet, um die Nachricht als POST an den DDNS meines Heimservers zu senden
  4. Der Server zu Hause nimmt die Post entgegen und führt ein Skript aus, das sie in eine Datei schreibt.

Ich weiß, wie man 1, 2 und 4 macht. Ich habe versucht, 3 zum Laufen zu bringen und kann es nicht. Ich kann nicht einmal CURL dazu bringen, die index.html meines Heimservers zu lesen. Hier ist der Code, den ich mit CURL verwendet habe (mit PHP):

    $string = 'http://MYURL.com';

    echo "sending to " . $string . '<br/>';

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $string);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_PORT, 5900);
    curl_setopt($ch, CURLOPT_TIMEOUT, 15);
    $response = curl_exec($ch);

    if(curl_error($ch))
    {
        echo curl_error($ch);
    }
    echo $response;

    curl_close($ch);

Ich habe dies mit google.com und dem Standard-Port getestet, und es hat gut funktioniert. Es gab die von Google vorgegebene HTML-Datei wieder. Wenn ich es jedoch auf dem DNS meines Heimservers ausführe, bricht es immer ab. Wenn ich keine Zeitüberschreitung einfüge, meldet es, dass keine Verbindung hergestellt werden konnte. Dabei wird genau dieselbe URL verwendet, die mir, wenn ich sie in einen Browser eingebe, korrekt die index.html meines Heimservers sendet.

Weiß jemand, was da schief läuft? Und wenn es einen besseren Weg gibt, dies zu tun, wie lautet er?

Ich weiß, dass dies eine lange Frage war, also vielen Dank.

Ethan

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X