Oppure

Loading
12/08/12 16:02
R1C
Salve ragazzi, come da titolo avrei un problema nel salvare un'immagine da iphone a linux.
Non ci sono problemi di nessun genere per quanto riguarda la comunicazione e la richiesta di file.
Il problema sorge nell'acquisire un'immagine e salvarla correttamente su di un file creato da me. ecco il codice


#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>


int main(int argc, char *argv[])
{
int port = 22;
char IP[]="10.42.43.81";
char risp[410000];
FILE *fp;
int i,e=1;
int server, err, byte;
struct sockaddr_in server_addr;
char buffer[]="GET /var/mobile/Media/DCIM/100APPLE/IMG_0298.PNG HTTP/1.1\r\nHost: 10.42.43.81 \r\n\r\n";


// Creazione del socket
server = socket(AF_INET, SOCK_STREAM, 0);

// Struttura relativa alle informazioni sul Server
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(port); //htons ---> host-order to network-order
server_addr.sin_addr.s_addr = inet_addr(IP); // inet_addr converte da dotted_decimal in network-order

printf("\n\nConnessione in corso...\n";);

// La funzione connect() restituisce un codice di errore
err = connect (server, (struct sockaddr *)&server_addr, sizeof(server_addr));
if(err == 0)
{
printf ("Connessione avvenuta\n";);
send (server,buffer,sizeof(buffer),0);

fp=fopen("image.png","w+";);
if (fp == NULL) printf ("Errore creazione file\n";);

else {

int flag=1;
//**************** problema :@
while(e=recv (server, risp, sizeof(risp), 0)) {
if (e<0) break; else {
for (i=0;i<e;i++) {
// queste condizioni sono per evitarmi l'header del pacchetto! ( un po primitiva )
if (risp[i] == '\n' && flag!=5) flag++;
//usleep(200);
if (flag==5)
fprintf(fp,"%c",risp[i]);
}
}
}
//***************************
fclose(fp);
}
//printf ("n:%d\n",n);
//printf ("\nServer: %s", risp);

}
else
{
perror (buffer);
}

printf("\n\n";);

// Chiusura socket
close(server);

}

DA NOTARE: la dimensione del file da me creato alla fine dell'eseguibile è identica al file originale dell'iphone, quindi non ci sono problemi di trasferimento..

aaa
15/08/12 7:43
jack92
Ciao, hai provato a creare il file in modalità binaria?
fp=fopen("image.png","wb"); 

it.wikibooks.org/wiki/C/…

P.S. Ricordati l'uso del tag code se scrivi del codice ;)
aaa