Προγραμματισμός

* Γνώση Υπολογιστών >> Προγραμματισμός >> C /C + + Προγραμματισμός

Πώς να γράψετε ένα απλό πρόγραμμα Socket Μεταφορά αρχείου κονσόλας

Δημιουργώντας ένα απλό πρόγραμμα υποδοχή που μεταφέρει ένα αρχείο ανάμεσα σε δύο servers είναι ένας πολύ καλός τρόπος για να επεκτείνουν τις γνώσεις σας προγραμματισμό υποδοχή . Η υποδοχή συνδέεται με μια συγκεκριμένη θύρα και συνδέεται με άλλη πρίζα για να δημιουργήσετε μια αμφίδρομη σύνδεση . Για να στείλετε ένα αρχείο , θα πρέπει να δημιουργήσετε μια πρίζα , συνδέστε το και ακούστε για μια σύνδεση , αποδέχεστε τη σύνδεση και στη συνέχεια να το στείλει στον άλλο διακομιστή - χρησιμοποιώντας τη λειτουργία " sendfile " . Οδηγίες
Η

1 Ανοίξτε το αρχείο σας σε C ​​προτιμώνται ολοκληρωμένο περιβάλλον ανάπτυξης σας . 2

Συμπεριλάβετε τα αρχεία κεφαλίδας πρόσβαση σε όλα τα είδη και τις λειτουργίες των δεδομένων , με την προσθήκη του παρακάτω κώδικα στην κορυφή του αρχείου σας :

# include # include # include # include # include # include # include # include # include # include # include εικόνων
3

κρίνει και να προετοιμάσει τις μεταβλητές που απαιτούνται για την υποδοχή μεταφορά αρχείων , με την προσθήκη του παρακάτω κώδικα στο επάνω μέρος της κύριας λειτουργίας σας :

int port = 4455 ? int sock_fd ? int sock_desc ? int file_fd ? struct stat stat_buf ? off_t file_offset = 0 ? char file_name [ PATH_MAX ] ? struct addrinfo addr , * rs ? struct sockaddr_in addr1 ? int addrlen ?

strcpy ( file_name , " myfile.txt ")?
Η 4

προετοιμαστεί τα structs διεύθυνση , με την προσθήκη του παρακάτω κώδικα :

memset ( & addr , 0 , sizeof addr ) ? addr.ai_family = AF_UNSPEC ? addr.ai_socktype = SOCK_STREAM ? addr.ai_flags = AI_PASSIVE ?

getaddrinfo ( NULL , το λιμάνι , και addr , & rs ) ?
Η 5

Δημιουργήστε ένα νέο socket , δεσμεύοντας την πρίζα και ρυθμίστε το να ακούει για εισερχόμενες συνδέσεις , με την προσθήκη του παρακάτω κώδικα :

sock_fd = socket ( rs - > ai_family , rs - > ai_socktype , rs - > ai_protocol ) ? bind ( sockfd , rs - > ai_addr , rs - > ai_addrlen ) ? ακούστε ( sock_fd , 1 ) ?
Η 6

Δημιουργία βρόχος "while" και περιμένετε για μια εισερχόμενη σύνδεση , πληκτρολογώντας τον ακόλουθο κώδικα :

ενώ η (πραγματική ) { sock_desc = accept ( sock_fd , ( struct sockaddr * ) & addr1 , και addrlen ) ?
Η 7

Ανοίξτε το αρχείο που θέλετε να μεταφέρετε και να το στείλετε με το " sendfile " λειτουργία , με την προσθήκη του παρακάτω κώδικα :

file_fd = ανοικτό ( file_name , O_RDONLY ) ? fstat ( file_fd , και stat_buf ) ?

file_offset = 0 ? sendfile ( sock_desc , file_fd , και file_offset , stat_buf.st_size ) ?
8

Κλείστε το αρχείο , Περιγραφέας πρίζα και η πρίζα, μόλις τελειώσετε την αποστολή της αρχείο , με την προσθήκη του παρακάτω κώδικα :

κοντά ( file_fd ) ? κοντά ( sock_desc ) ? }

κοντά ( sock_fd ) ?
Η 9

Αποθηκεύστε το αρχείο προέλευσης . Μεταγλώττιση και εκτέλεση του προγράμματος για να στείλετε ένα αρχείο χρησιμοποιώντας μια πρίζα .
Η
εικόνων

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα