Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα,

 

θέλω να συνδεθώ σε ένα socket που υπάρχει (έχω IP και port) το οποίο μου στέλνει data σε xml μορφή.

 

Μήπως γνωρίζεται πως μπορεί να γίνει αυτό σε PHP; Έχετε να προτείνετε κάτι άλλο με PHP πάντα;

 

Μέχρι στιγμής έχω γράψει το εξής (στα 5 πρώτα μηνύματα που θα πάρω σταματάω):

$addr = 'XXXXXXXX';
$port = XXXXX;

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($socket, $addr, $port);
socket_getsockname($socket, $addr, $port);
$counter = 1;
while ($counter < 5)
{
    $input = socket_read($socket, 1024);
    if ($input !== '')
    {
        $counter++;
        echo $input."<br><br>";
    }
}
socket_close($socket);
Δημοσ.

Το όλο σκηνικό, είναι ότι μέσα από socket θα μου στέλνει ο πελάτης δεδομένα.

 

Επομένως, θα πρέπει να συνδεθώ μαζί του και να περιμένω πότε θα μου στείλει κάτι, να το "ακούσω" εγώ, να το διαβάσω και να κάνω ότι πρέπει να κάνω.

 

Αυτό δεν θα σταματάει, θα πρέπει να τρέχει συνέχεια, δηλαδή να μην σταματάω να περιμένω να μου έρθει κάποια data.

 

Γίνεται αυτό με curl;;; Έχεις κάποιο παράδειγμα να μου δείξεις;

Δημοσ.

Ευχαριστώ για τις μέχρι τώρα απαντήσεις σας.

 

Σε αυτό που πρότεινες defacer για την stream_socket_client, το κοιτάω και επανέρχομαι.


Δυστυχώς δεν έβγαλα άκρη.

 

Παρακάτω ο κώδικας:

$fp = stream_socket_client("tcp://ΧΧΧΧΧΧ:ΧΧΧΧ", $errno, $errstr, 30);
if (!$fp)
{
  echo "$errstr ($errno)<br />\n";
}
else
{

}

στο else δεν έχω καταλάβει τι κώδικα πρέπει να γράψω έτσι ώστε να "ακούω" συνέχεια στο URL που έχω βάλει και ότι μου στέλνει να το παίρνω σε μια μεταβλητή και να το διαχειρίζομαι έτσι όπως πρέπει.

Έγραψα και αυτό μέσα στο else αλλά δεν πήρα κάποια απάντηση (όπως θα έπρεπε).

$message = "<?xml version='1.0' encoding='utf-8'?>";
$message .= '<message timestamp="0" type="login" id="1234" pass="aaaaaa"></message >';

fwrite($fp, $message);
    while (!feof($fp)) {
		$a = fread($fp, 1024);
		echo "A = ".$a;
        echo fgetss($fp, 1024);
    }
    fclose($fp);
Δημοσ.

Τρέχεις τον client από command line ή όχι; Αν όχι, command line. Αν command line και πάλι δε βλέπεις τίποτα τότε κάτι δεν κάνει καλά ο server.

Δημοσ.

Τον έτρεξα και από command line αλλά τα ίδια αποτελέσματα.

 

Ο κώδικας που έχω γράψει είναι σωστός ή γράφω λαλακίες;;; Θέλω να ακούω συνέχεια σε αυτό το hostname που συνδέομαι και όταν μου στείλει κάτι να το τσιμπήσω.

Δημοσ.

Είναι αρκετά σωστός για να κάνει τουλάχιστον κάτι. Οπότε ψάξου λίγο τι γίνεται από την πλευρά του server.

Δημοσ.

Να βάλω στη συζήτηση τo max execution time (της php) ; Δεν είμαι σίγουρος αν μπορείς να το τρέχεις για πάντα, εκτός και αν με κάποιο τρόπο μηδενίζεις τον μετρητή αυτόν..

Δημοσ.

Όταν τρέχεις από CLI είναι απεριόριστο by default. Αλλά ακόμα κι αν δεν ήταν γίνεται τόσο εύκολα που δεν έχει ουσία.

  • Like 1
Δημοσ.

Σε ευχαρσιτώ για την απάντηση mad-proffessor .

 

Την έχω χρησιμοποιήσει και αυτή αλλά το αποτέλεσμα είναι το ίδιο όπως και στις άλλες 2 περιπτώσεις.

 

Έχω στείλει request στον client και περιμένω να δω τι θα μου απαντήσει...

Δημοσ.

Ο σερβερ ακούει; Έχεις κάνει bind σωστα στο port;Σε τi γλώσσα είναι; Ti λετουργικό; Όλα παίζουν ρόλο. Εσυ που κάνεις connect είσαι ο client ο άλλος που κάνει bind και listen είναι ο σερβερ

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...