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

Επικοινωνία C προγρ. με web server


InDiO

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

Δημοσ.

Καλά έχεις καταλάβει. Να κάνω λιανά την λειτουργεία του προγρ.

 

Είναι το web interface του setup μιας wireless συσκευής. Πρώτο βήμα: να κανω authentication με admin : xxxxx στο σέρβερ, κάτι το οποίο ακόμα δεν έχω καταλάβει πώς πρέπει να κάνω. Δεύτερο, να αλλάξω ένα radiobutton, όπως είπες, και να κάνω submit.

 

Μου λες για τα RFCs για HTTP/1.1 και το αντιστοιχο για auth. Πραγματικά εσύ κατάφερες να εξάγεις πληροφορίες για την δούλεια που ήθελες να κάνεις; Μιλάω πάντα για την περίπτωση που έχεις μηδενική αρχική γνώση περί HTTP πρωτοκόλλου. Τα έχω και τα δύο rfcs που λές, αλλά πραγματικά δεν έχω καταφέρει να εξάγω κάτι χρήσιμο από αυτά....Αν εύρισκα κάποιο tut η howto θα ήμουν ευτυχής..

Δημοσ.

θελεις να στειλεις κατι σαν το παρακατω

 

>
POST /path/script.cgi HTTP/1.0
From: [email][email protected][/email]
User-Agent: HTTPTool/1.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 32
home=Cosby&favorite+flavor=flies

 

απλα δες στο content type τι πρεπει να συμφωνησεις με τον server και να στειλεις τις παραμετρους αναλογα (encoded) .οι παραμετροι εδω (key-Value pairs) εινα η τελευταια σειρα. Δηλαδη εσυ θα στειλεις το ονομα του radio button και την τιμη του (δεν θυμαμαι αν ειναι true/false).

 

:)

Δημοσ.

OK, thanks.

 

Ρε παιδιά ψάχνω να βρω μια συναρτησούλα για base64 encoding, για να στείλω τα authentication data στο σερβερ. Κάτι έχω βρει, αλλά όχι ακριβώς αυτό που θέλω! Στις κλασσικές βιβιοθήκες της C δεν υπάρχει κάποια συναρτηση i guess...Έχετε τπτ υπόψιν;

Ευχαριστώ...

Δημοσ.

ψαξε καλυτερα αποκλειεται να μην βρεις..κατι ετοιμο! και free! αν πραγματι δεν βρεις ..ριξε να ενα μυνημα να σου στειλω μερικες σε java και αν εχεις ορεξη να το γραψεις σε C ( :? ) παρολα αυτα επιμενω οτι πρεπει να ψαξεις καλυτερα!

Δημοσ.

Θα προτιμούσα να φτάσω το πρόγραμμα σε μια πιο stable έκδοση και μετά να ποστάρω κώδικα.

 

Όλα ΟΚ με base64 authentication, με πολύ ψάξιμο βρήκα μια απλή συνάρτηση και την χρησιμοποιώ επιτυχώς. Μπορείτε να μου πειτε κάτι:

 

Ποιος θεωρείταi o αντίστοιχος του GCC, σε περιβάλλον windows; Θέλω να φτιάξω binary και για win. Τα sockets θα δουλέψουν χωρίς αλλαγές; Έχω ακούσει ότι πρέπει να συμπεριλάβω την <winsock.h> για να λειτουργήσουν όλα χωρίς αλλαγές;

  • 3 εβδομάδες αργότερα...
Δημοσ.

Hi again παιδιά.

 

Το πρότζεκτ έμεινε λίγο στάσιμο, και θα μείνει για λίγο καιρό, μέχρι να τελειώσουν οι εξετάσεις...

 

Η λειτουργικότητα του (δηλαδή να κάνει basic authentication σε web server, και να ζητά επιτυχώς μια σελίδα), δοκιμάστηκε σε περιβάλλον localhost και δουλέυει 100%. Καμία από τις κλήσεις σχετικές με sockets δεν επιστρέφει λάθος, και λαμβάνω την test page με το πρόγραμμά μου, από τον Apache του localhost, η οποία είναι και "προστατευμένη" από ένα .htaccess αρχείο, για να βλέπω ότι δουλεύει και το auth.

 

Όλα καλά και ωραία στο localhost. Οταν το τρέχω με στόχο ένα web server του δικτύο, 0, τίποτα, καμία απάντηση.

Οι κλήσεις gethostbyname, socket, bind, connect, ακόμα και ή send δεν επιστρέφουν κανένα λάθος.

 

Με την κλήση όμως της recv, το πρόγραμμα περιμένει επ άπειρον την απάντηση του server!! Δεν παίρνει δηλαδή ποτέ απάντηση.

 

Έχει κανείς κάποια ιδέα, γιατί ενώ το πρόγραμμα δουλεύει ΟΚ σε localhost, δεν κάνει τπτ σε κανονικό δικτυακό περιβάλλον;;;

thanks.... :oops: :cry:

Δημοσ.

Το log αρχεια /στατιστικα του apache που προσπαθεις να δεις τι λενε?μπορεις να δεις? trafic βλεπεις καθολου οταν τρεχεις το προγραμμα σου?μηπως παιζει καποιο firewall?

 

επισης...το debug τι λεει? επιστρεφουν ολες οι μεθοδοι αυτα που πρεπει να επιστρεψουν?

 

μηπως εχεις γραψει καποιον παραξενο κωδικα οταν διαβαζεις απο το socket που δεν ειναι πολυ λογικος οταν αντιμετωπιζει traffic? τι εννοω.

Ειναι συνηθης κατασταση..εχω κανει και εγω πολλες φορες το λαθος και αναρωτιεμαι τι φταει! Να τρεχω δικτυα πραγματα σε localhost..που ολα απαντανε γρηγορα..και αμεσως τα socket μου γεμιζουν τα buffer.

 

Αλλα σε πραγματικες καταστασεις μερικες φορες..μια λογικη ανετοιμοτητα του socket να σου δωσει για μερικα nanosecond αυτα που θες...οδηγει..πχ να σου επιστρεψει ενα -1 socket emtpy ,closed κτλ κτλ και φυσικα να μην παρεις καμια απαντηση. Δες μηπως παιζει κατι τετοιο..αφου βεβαια περασεις απο το σταδιο του να δεις τα log file του apache.

 

Νομιζω οτι μαλλον υπαρχει λιγο παραξενος κωδικας και το socket δεν επιστρεφει τιποτα γιατι δεν δινει δεδομενα γρηγορα!οποτε και εσυ δεν βλεπεις κατι παραξενο γιατι απλα...'υποθετω εχεις μια loop που διαβαζεις το socket..και λες...while (in.read != -1) η κατι παρομοιο. Το socket για καποιο λογο δεν εχει τιποτα..σου επιστρεφει -1 και εσυ δεν διαβαζεις τιποτα!

 

 

ολα τα παραπανω ειναι μια υποθεση μπορει να ειμαι τελειως εκτος...οποτε με συγχωρεις!

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...