Σας ευχαριστώ παιδιά,
@Bloody Mary
Το συγκεκριμένο function είναι στο header urlmon.h..
@djsolid
Δοκίμασα, αλλα no luck..
Υποθέτω υπάρχει κάποιο πρόβλημα ασυμβατότητας του συγκεκριμένου library με τον mingw32 που χρησιμοποιεί το Dev. Θα δοκιμάσω να το κάνω compile σε VC++...
Εdit:
Τελικά αναγκάστηκα να δουλέψω με sockets, και αντιμετωπίζω το εξής περίεργο πρόβλημα.
Αφού έχει γίνει η σύνδεση στο server, στέλνω ένα GET αίτημα για μία εικόνα, δημιουργώ το buffer για το response καθώς και το χώρο για να το αποθηκεύσω.
Code: Select all
char *buf = (char*)malloc(1024);//1k buffer
char *response = (char *)malloc(65000);//65k για όλο το file
int receivedTotal = 0;
while((readBytes = recv(s, buf, 1024, 0)) > 0)
{
strcat(data, buf);//κάνουμε concatenation του buffer στο data
memset(buf, 0L, 1024); //clear buffer
receivedTotal += readBytes;
}
Για κάποιο λόγο, ο αριθμός των bytes που γυρίζει η recv, δεν αντιστοιχούν σε όλα τα bytes που γράφονται στο buffer μου. Δηλαδή εάν μέσα στο loop, εισάγω τον αντίστοιχο κώδικα,
Code: Select all
cout << "Bytes Received by recv(): " << readBytes << " || " << Bytes in buffer: " << strlen(buf) << endl;
Αρκετές φορές οι 2 αριθμοί διαφέρουν, με αποτέλεσμα να έχω data loss, διαφορετικά τελικά size(το data απο το size της εικόνας + το size του header), και σαφώς ένα αρχείο που όταν αφαιρώ τα headers, είναι corrupt..
Καμία ιδέα απο τους guru του φόρουμ;
Εdit: Τελικά έφταιγε οτι η strlen σταματάει όταν δεί null χαρακτήρα...και προφανώς περνούσα λιγότερα bytes στo αρχείο αφού χρησιμοποιούσα strlen για το byte count στο fstream.
To πρόβλημα παραμένει όμως, αφαιρώ τα http header, και δεν μπορεί να ανοίξει το αρχείο. Οτιδήποτε σε ascii το διαβάζει κανονικά, τα binary δεν μπορεί να μεταφέρει.
Any help;