Kαλησπέρα ,
χρησιμοποιώ το pycharm ΙDE για Python και αντιμετωπίζω το εξής πρόβλημα:
import socket
socket.setdefaulttimeout(2)
s = socket.socket()
s.connect(("192.168.168.137",21))
banner = s.recv(1024)
print banner
To script εκτελείται χωρίς error αλλά δεν εμφανίζει αποτέλεσμα.
Αντιθέτως εαν το τρέξω από το python shell μου γυρνάει : 220 (vsFTPd 2.3.5)
Kαμιά ιδέα ? Είμαι εντελώς αρχάριος
Εμφάνιση 1-4 από 4
-
15-03-15, 18:31 Python-Pycharm SocketServer #1
-
17-03-15, 00:55 Απάντηση: Python-Pycharm SocketServer #2
Τι πληροφορία περιέχει ο banner?Λογικά η s.recv λαμβάνει κάποιο δεδομένο σε bytes το οποίο το στέλνεις από ένα άλλο script στο οποίο έχεις
κάνει bind.Πρέπει να γνωρίζω ακριβώς το δεδομένος που λαμβάνεις για να σε απαντήσω.Επιπλέον βάλε και τον κώδικα από το οποίο στέλνεις το δεδομένο. Κάνοντας απλός print τον banner δεν θα εμφανιστεί το δεδομένο σου διότι ο banner περιέχει bytes.Λογικά θα πρέπει να εμφανίζει τα bytes τα οποία περιέχει.
-
17-03-15, 15:50 Απάντηση: Python-Pycharm SocketServer #3
To script συνδέεται σε ένα server με την IP 192.168.168.137 στην πόρτα 21. Εαν συνδεθεί επιτυχώς επιστέφει το banner του ftp server που τρέχει 220 (vsFTPd 2.3.5).
Από python shell παίζει κανονικά. Στο IDE δεν επιστρέφει τίποτα
-
17-03-15, 19:09 Απάντηση: Python-Pycharm SocketServer #4
Για δοκίμασε να αλλάξεις αυτήν την εντολή banner = s.recv(1024) ως εξής:
banner = bytes.decode( s.recv(1024) )
Άμα στο python shell σε εμφάνιζε αυτό b"220 (vsFTPd 2.3.5)" ενώ στο IDE τίποτα λογικά αυτό θα διορθώσει το πρόβλημα.
Αν όντως φταίει αυτό θα σε εξηγήσω ποιο είναι το λάθος.
Bookmarks