Code :
// Declaration de variables WSADATA initialisation_win32; // Variable permettant de récupérer la structure d'information sur l'initialisation int erreur; // Variable permettant de récupérer la valeur de retour des fonctions utilisées int taille; char buffer[1024]; // Tampon contenant les données reçues ou envoyées SOCKET id_de_la_socket; // Identifiant de la socket SOCKET transf_sock; SOCKADDR_IN information_sur_la_source; // Déclaration de la structure des informations lié à l'écoute FILE *file2; int nbr_recv,i,j; int z=0; int decalage=0; void main(int argc, char* argv[]) { // Initialisation de Winsock erreur=WSAStartup(MAKEWORD(2,2),&initialisation_win32); // Ouverture d'une Socket id_de_la_socket=socket(AF_INET,SOCK_STREAM,0); // Lire la socket à une ip et un port d'écoute information_sur_la_source.sin_family=AF_INET; information_sur_la_source.sin_addr.s_addr=INADDR_ANY; // Ecoute sur toutes les IP locales information_sur_la_source.sin_port=htons(8686); // Ecoute sur le port 8686 erreur=bind(id_de_la_socket,(struct sockaddr*)&information_sur_la_source,sizeof(information_sur_la_source)); erreur = listen(id_de_la_socket,1); transf_sock = accept(id_de_la_socket,(struct sockaddr*)&information_sur_la_source.sin_addr,NULL); nbr_recv = recv(transf_sock,(char *) buffer,6,NULL); taille = StrToInt(buffer); while(z<taille) { nbr_recv = recv(transf_sock,(char *)buffer,1024,NULL); printf("\n nbr_recv = %d", nbr_recv ); file2 = fopen("test","w+" ); fseek(file2,decalage,0); for(i=0; i<nbr_recv-1; i++) fputc((char)buffer[i], file2); decalage = decalage + 1023; z = z + 1024; } system("pause" ); }
|