Bonjour a tous,
Je code un Client serveur.
le serveur en mode console, fair un imprime ecran, envoi la valeur entiére de la taille du fichier en octet, puis envoi l'image BMP capturé au client par packet de 512 octets. le serveur utilise les socket avec WSA, sockaddr_in etc...
le client en mode fénétre utilise wxwidget donc les socket simplifié wxSocketClient etc... ça c juste pour préciser.
voici le code de l'emission du fichier BMP (serveur):
//au préalable, taille est la variable entiére qui contient le nombre d'octet du fichier
{
char octet[512];
int re;
int i;
unsigned short int NbOctet=512;
for(i=0 ; i<((taille/NbOctet) + 1 ); i++){
re = read(idfichier, octet, NbOctet); //lecture de 512 octet dans le fichier
re = Classe.ecrireOctets(octet, re); //emission de ces 512 octet via une méthode d'une classe
}
}
voici le code de la réception du fichier BMP (client):
{
char octet[512];
unsigned long int i;
unsigned long int j;
unsigned long int NbOctet=512;
for(i=0 ; i < ((taille/NbOctet) + 1) ; i++){
Client.Socket->Read(octet, NbOctet); //vague de reception de 512 octets
for(j = i*NbOctet ; j < (i*NbOctet + NbOctet) ;j++){
//Client.contenu est une chaine d'octet qui va contenir tou le fichier
Client.contenu[j] = octet[j-i*NbOctet];
//ici, méme si lors de la derniere vague d'émission doctet il y en a moin de 512 et qu'on en
//ecri quand mm 512 dans contenu, c'est pas grave seul les tailles octets seront ecrit dans le
//nouveau fichier, pas un octet de plus.
}
}
Client.FaireUnFichier(taille); //sachant quand le contenu est un atribut public de la classe donc
//seul la taille est passé en paramétre de cette méthode.
}
alors je sais que ce code n'est pas du grand art, mais il fonctionne, lorsque je lance le serveur et le client sur mon méme PC, le transfére de l'image se déroule bien, et limage réstitué au Client est parfaite.
en revanche lors que le serveur se trouve sur une autre machine du réseau, la connexion se passe bien, le transfére de la taille de limage aussi, et le transfére de limage a premiére vue aussi, et pourtant, en ouvrant l'image BMP réstitué, celle-ci s'affiche exactement comme une certaine chaine télévision payante lorsqu'on ne l'a pas payé, c'est a dire toute les ligne entrelacé...
j'ai donc essayé de voir si le serveur lisais et éméttais réellement 512 octets a chaque vague, la réponse est oui.
je suis donc perdu, et j'ai vraiment besoin d'aide, je ne comprend absolument pas pourquoi client-serveur sur mon pc fonctionne parfaitement bien, et serveur sur un autre pc, limage est totalement inexploitable.
Pour la petite histoire:
je vis dans une famille nombreuse ou chacun m'apel sans cesse dés que son pc affiche une fenétre anormal, du genr le parfeu qui demande confirmation, IE qui demande d'étre lexplorer internet par defaut etc... c'est pourquoi codé une applicaton qui me permettrai davoir limprime ecran lorsque l'un ou l'autre veu me faire déplacer sans cesse pour rien ma semblait une excellente idée et projet.
Merci par avance
Configuration: Windows XP Internet Explorer 7.0