codice:
void lettura_file ( FILE * file, char *nome_file) {
WSADATA data;
int size, err;
char buf[MAX_FILE], ip[32], c_size ;
SOCKET sock;
SOCKADDR_IN sock_in;
err = WSAStartup(MAKEWORD(2,2), &data);
if ( err == SOCKET_ERROR)
printf("Libreria non inizializzata, ERRORE : %d\n", WSAGetLastError());
sock = socket(AF_INET, SOCK_STREAM, 0);
if ( sock == INVALID_SOCKET)
printf ("Socket non creato corretamente, ERRORE %d", WSAGetLastError());
sock_in.sin_family = AF_INET;
sock_in.sin_port = htons(222);
printf("Inserisci indirizzo ip :");
scanf("%s", ip);
// printf(ip);
sock_in.sin_addr.S_un.S_addr = inet_addr(ip);
err = connect(sock, (SOCKADDR *)&sock_in, sizeof(sock_in));
if ( err == SOCKET_ERROR)
printf("Connessione non avenuta, ERRORE : %d", WSAGetLastError());
else
printf("Connessione avenuta\n");
size = strlen(nome_file) +1;
c_size = (char ) size;
printf("%c", c_size);
send ( sock, nome_file, size, 0);
do {
size = fread(buf, 1, MAX_FILE, file);
printf("Dati letti : %d\n", size);
size = send( sock, buf, size, 0);
printf("Dati inviati : %d\n", size);
}while(!feof(file)) ;
closesocket(sock);
WSACleanup();
}
void scrittura_file () {
FILE *file;
WSADATA data;
SOCKADDR_IN sock_in, s_accept_in;
SOCKET sock, s_accept;
int err, size, size_dati, i, prova;
char buf[MAX_FILE], nome_file[100];
err = WSAStartup(MAKEWORD(2,0), &data);
if ( err == SOCKET_ERROR)
printf("Libreria non inizializzata, ERRORE : %d\n", WSAGetLastError());
sock = socket(AF_INET, SOCK_STREAM, 0);
if ( sock == INVALID_SOCKET)
printf("Socket non creato, ERRORE : %d\n", WSAGetLastError());
sock_in.sin_family = AF_INET;
sock_in.sin_port = htons(222);
sock_in.sin_addr.S_un.S_addr = INADDR_ANY;
err = bind( sock, (SOCKADDR *)&sock_in, sizeof(SOCKADDR));
if ( err == SOCKET_ERROR)
printf("Funzione bind non riuscita, ERRORE : %d\n", WSAGetLastError());
err = listen(sock, 1);
if ( err == SOCKET_ERROR)
printf("Funzione listen non riuscita, ERRORE : %d\n", WSAGetLastError());
size = sizeof(SOCKADDR_IN);
s_accept = accept(sock, (SOCKADDR *)&s_accept_in, &size);
if ( s_accept == INVALID_SOCKET)
printf("Socket accept non creato, ERRORE : %d\n", WSAGetLastError());
else
printf("Sockey connesso, ip : %s\n", inet_ntoa(s_accept_in.sin_addr));
// NON FUNGE
file = fopen("prova_coppia.doc", "wb");
recv(s_accept, nome_file, 100, 0);
printf("Il nome del file e' : %s", nome_file);
for (;;) {
size_dati = recv(s_accept, buf, MAX_FILE, 0);
if ( size_dati == SOCKET_ERROR)
printf("Funzione recv : %d\n", WSAGetLastError());
printf("Dati ricevuti : %d\n", size_dati);
size_dati = fwrite(buf, 1, size_dati, file);
printf("Dati scritti : %d\n", size_dati);
prova = feof(file);
printf(" EOF presente : %d\n",prova);
prova = ferror(file);
printf(" ERRORE presente : %d\n", prova);
if ( size_dati != 100)
break;
}
}
grazie....