Uberalles_gr Δημοσ. 5 Νοεμβρίου 2014 Δημοσ. 5 Νοεμβρίου 2014 Καλησπέρα, θέλω να συνδεθώ σε ένα 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);
lion2486 Δημοσ. 6 Νοεμβρίου 2014 Δημοσ. 6 Νοεμβρίου 2014 Αν δοκίμαζες κάτι με curl και keep_alive για να μην ξεκινάς από την αρχή κάθε request;
Uberalles_gr Δημοσ. 6 Νοεμβρίου 2014 Μέλος Δημοσ. 6 Νοεμβρίου 2014 Το όλο σκηνικό, είναι ότι μέσα από socket θα μου στέλνει ο πελάτης δεδομένα. Επομένως, θα πρέπει να συνδεθώ μαζί του και να περιμένω πότε θα μου στείλει κάτι, να το "ακούσω" εγώ, να το διαβάσω και να κάνω ότι πρέπει να κάνω. Αυτό δεν θα σταματάει, θα πρέπει να τρέχει συνέχεια, δηλαδή να μην σταματάω να περιμένω να μου έρθει κάποια data. Γίνεται αυτό με curl;;; Έχεις κάποιο παράδειγμα να μου δείξεις;
defacer Δημοσ. 6 Νοεμβρίου 2014 Δημοσ. 6 Νοεμβρίου 2014 Δε χρειάζεται να παιδεύεσαι πολύ, υπάρχει η stream_socket_client που κάνει αυτή τη δουλειά με τη μία. Μόνο έχε υπόψη ότι δε μπορείς να βασιστείς στο πόσα θα bytes επιστρέφει η κάθε read.
Uberalles_gr Δημοσ. 6 Νοεμβρίου 2014 Μέλος Δημοσ. 6 Νοεμβρίου 2014 Ευχαριστώ για τις μέχρι τώρα απαντήσεις σας. Σε αυτό που πρότεινες 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);
defacer Δημοσ. 6 Νοεμβρίου 2014 Δημοσ. 6 Νοεμβρίου 2014 Τρέχεις τον client από command line ή όχι; Αν όχι, command line. Αν command line και πάλι δε βλέπεις τίποτα τότε κάτι δεν κάνει καλά ο server.
Uberalles_gr Δημοσ. 6 Νοεμβρίου 2014 Μέλος Δημοσ. 6 Νοεμβρίου 2014 Τον έτρεξα και από command line αλλά τα ίδια αποτελέσματα. Ο κώδικας που έχω γράψει είναι σωστός ή γράφω λαλακίες;;; Θέλω να ακούω συνέχεια σε αυτό το hostname που συνδέομαι και όταν μου στείλει κάτι να το τσιμπήσω.
defacer Δημοσ. 6 Νοεμβρίου 2014 Δημοσ. 6 Νοεμβρίου 2014 Είναι αρκετά σωστός για να κάνει τουλάχιστον κάτι. Οπότε ψάξου λίγο τι γίνεται από την πλευρά του server.
Uberalles_gr Δημοσ. 6 Νοεμβρίου 2014 Μέλος Δημοσ. 6 Νοεμβρίου 2014 Σε ευχαριστώ πάρα πολύ για τον χρόνο σου.
lion2486 Δημοσ. 7 Νοεμβρίου 2014 Δημοσ. 7 Νοεμβρίου 2014 Να βάλω στη συζήτηση τo max execution time (της php) ; Δεν είμαι σίγουρος αν μπορείς να το τρέχεις για πάντα, εκτός και αν με κάποιο τρόπο μηδενίζεις τον μετρητή αυτόν..
defacer Δημοσ. 7 Νοεμβρίου 2014 Δημοσ. 7 Νοεμβρίου 2014 Όταν τρέχεις από CLI είναι απεριόριστο by default. Αλλά ακόμα κι αν δεν ήταν γίνεται τόσο εύκολα που δεν έχει ουσία. 1
mad-proffessor Δημοσ. 7 Νοεμβρίου 2014 Δημοσ. 7 Νοεμβρίου 2014 Εγω θα τέσταρα και τις fsockopen (δες και τη σημείωση που έχει) και pfsockopen
Uberalles_gr Δημοσ. 7 Νοεμβρίου 2014 Μέλος Δημοσ. 7 Νοεμβρίου 2014 Σε ευχαρσιτώ για την απάντηση mad-proffessor . Την έχω χρησιμοποιήσει και αυτή αλλά το αποτέλεσμα είναι το ίδιο όπως και στις άλλες 2 περιπτώσεις. Έχω στείλει request στον client και περιμένω να δω τι θα μου απαντήσει...
mad-proffessor Δημοσ. 7 Νοεμβρίου 2014 Δημοσ. 7 Νοεμβρίου 2014 Ο σερβερ ακούει; Έχεις κάνει bind σωστα στο port;Σε τi γλώσσα είναι; Ti λετουργικό; Όλα παίζουν ρόλο. Εσυ που κάνεις connect είσαι ο client ο άλλος που κάνει bind και listen είναι ο σερβερ
Uberalles_gr Δημοσ. 7 Νοεμβρίου 2014 Μέλος Δημοσ. 7 Νοεμβρίου 2014 Γράφω σε PHP και παραπάνω έγω βάλει τον κώδικα. Στο #1 και #3 περιγράφω τι πρέπει να κάνω.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα