απαιτήσεις: Ορισμένα εργαλεία τρίτων είναι σενάρια python, κάνω μόνος μου ανάπτυξη C#, δεν είμαι ικανός στην ίδια την python, αν μεταφράσετε κώδικα python σε κώδικα C#, είναι πολύ δύσκολο, είναι καλύτερο να χρησιμοποιήσετε python για να ανοίξετε μια υπηρεσία http, καλώ τη διεπαφή δύο και, τέλος, εκτελέστε την ίδια την python για να εκτελέσετε τον εσωτερικό της κώδικα.
Το HTTPServer είναι μια υποκλάση του socketserver.TCPServer. Δημιουργεί και ακούει υποδοχές HTTP για την αποστολή αιτημάτων σε χειριστές.
Τεκμηρίωση:Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Συμβουλή: http.serverΔεν συνιστάται για παραγωγή。 Εφαρμόζει μόνο βασικούς ελέγχους ασφαλείας.
Ο κωδικός έχει ως εξής:
Χρησιμοποιήστε την Python για να ακούσετε τη θύρα 10254, να ενεργοποιήσετε την υπηρεσία HTTP και να προσπαθήσετε να αποκτήσετε πρόσβαση στη διεύθυνση URL, όπως φαίνεται στην παρακάτω εικόνα:
Οι δοκιμές είναι προσβάσιμες, ωστόσο, όταν χρησιμοποιώ το πρόγραμμα περιήγησης edge για πρόσβαση πολλές φορές, μερικές φορές πάντασε εκκρεμότηταstate, αφού δημιουργήσω μια σύνδεση από το native μέσω telnet και θύρας 10254, διαπίστωσα ότι η υπηρεσία http δεν είναι προσβάσιμη τόσο από τον διακομιστή όσο και από τον τοπικό, όπως φαίνεται στην παρακάτω εικόνα,Καμία απάντηση για 20 λεπτά, και στο τέλος, δεν μπορούσα παρά να ζητήσω ξανά:
Στην αρχή, νόμιζα ότι ήταν πρόβλημα το γεγονός ότι δεν υπήρχε ρύθμιση "Content-Length", με αποτέλεσμα το πρόγραμμα περιήγησης να μην γνωρίζει πόσα byte περιεχομένου να διαβάσει και δεν ήξερα πότε ολοκληρώθηκε η ανάγνωση, αλλά μετά την κεφαλίδα απόκρισης, το πρόβλημα δεν λύθηκε ακόμα.
Θα μπορούσε να είναι ότι η προεπιλογή είναι single-threaded, επιτρέποντας μόνο σε έναν πελάτη να έχει πρόσβαση κάθε φορά;
Κοιτάζοντας την τεκμηρίωση, διαπίστωσα ότι υπάρχει μια κλάση ThreadingHTTPServer, η οποία χρησιμοποιεί νήματα για την επεξεργασία αιτημάτων χρησιμοποιώντας νήματα και ο κώδικας αλλάζει ως εξής:
Το πρόβλημα λύθηκε, τελείωσε.
|