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

c/c++ network programing


miza

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

Δημοσ.

Έχω ασχοληθεί με c/c++ και τώρα θέλω να ασχοληθώ με network programing σε αυτές τις γλώσσες.Έχω υπόψη μου 2 tutorials

1o Beej's Guide to Network Programming

2o Stevens - Unix Network Programming

και θα ήθελα την γνώμη σας για πιο από τα 2 η ακόμα και κάποιο άλλο τρίτο αν έχει υπόψη του κάποιος.Επίσης όσο αφορά το δεύτερο tutorial, είναι μονο για unix η μπορώ και σε windows να τα χρησιμοποιήσω?

Δημοσ.

Καταρχήν το δεύτερο που αναφέρεις είναι το καλύτερο βιβλίο όσον αφορά το network programming. Αν θέλεις απλώς ένα tutorial το "Beej's Guide to Network Programming" είναι μια χαρά. Τώρα για προγραμματισμό στα windows υπάρχουν κάποιες διαφορές. Εισάγεις μόνο ένα header file το

>Winsock2.h

Πολύ σημαντικό επίσης που πρέπει να γνωρίζεις είναι ότι για να μπορείς να χρησιμοποιήσεις οποιαδήποτε συνάρτηση που έχει άμεση σχέση με το network programming windows πρέπει πρώτα απ' όλες να κάλεσεις την

>WSAStartup()

Αν δεν την καλέσεις όλες οι υπόλοιπες όπως bind(), socket(), accept() κλπ θα αποτύχουν. Στα Windows ο τύπος επιστροφής της συνάρτησης socket() που περιγράφει τον file descriptor δεν είναι int όπως στα frebsd/unix/linux αλλά SOCKET. Πολυ σημαντικό να μην κάνεις υποθέσεις για την τιμή του. Συνήθως ακολουθεί την ίδια λογική όπως και στα άλλα συστήματα.

 

Κάτι ακόμη που είναι διαφορετικό στα windows:-D είναι ότι σε περίπτωση σφάλματος δεν επιστρέφει -1 και κάτι πιο σημαντικό, για να πάρεις κάποιο πιο ευανάγνωστο μήνυμα δεν μπορείς να χρησιμοποιήσεις την perror, ούτε καν ην GetLastError που χρησιμοποιείται στις περισσότερες Windows εφαρμογές. Για να δεις τον τύπο επιστροφής του σφάλματος χρησιμοποιείς την

>WSAGetLastError()

και για να πάρεις πιο περιγραφικό κείμενο χρησιμοποιείς την

>FormatMessage()

η οποία τα περιπλέκει ακόμη περισσότερο. Απο τα τελευταία και πιο ασήμαντα που θυμάμαι:lol: είναι ότι αντι για την

>close()

καλείς την

>closesocket()

και ότι σε κάθε

>WSAStartup()

αντιστοιχεί και μια κλήση της

>WSACleanup()

 

Αυτά ελπίζω να μην σε μπέρδεψα(ή απογοήτευσα παραπάνω).

Για ότι έχει σχέση με Windows ρίξε και μια ματιά εδώ: http://msdn.microsoft.com/en-us/library/ms741416(VS.85).aspx ή κάνε μια αναζήτηση στο google για "Winsock Reference"

 

CU

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

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

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