Bien le bonjour,
je développe une application Peer-To-Peer.
Chaque clients partage un lot de fichiers etc (fonctionnement assez connu, je vous épargne les details ).
Voici mon code pour envoyer mon fichier :
Socket clientSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
string filePath = "";
/* File reading operation. */
FichierAEnvoyer = FichierAEnvoyer.Replace("\", "/");
while (FichierAEnvoyer.IndexOf("/") > -1)
{
filePath += FichierAEnvoyer.Substring(0, FichierAEnvoyer.IndexOf("/") + 1);
FichierAEnvoyer = FichierAEnvoyer.Substring(FichierAEnvoyer.IndexOf("/") + 1);
}
byte[] fileNameByte = Encoding.ASCII.GetBytes(FichierAEnvoyer);
if (fileNameByte.Length > 850 * 1024)
{
return;
}
byte[] fileData = File.ReadAllBytes("D:\\FichiersPartages\\satellite 2.jpg");
// Lit et stock dans clientData le fichier
byte[] clientData = new byte[4 + fileNameByte.Length + fileData.Length];
// clientData stockera aussi la taille du nom, le nom et les données
byte[] fileNameLen = BitConverter.GetBytes(fileNameByte.Length);
//Donnée binaire de la taille du nom du fichier
fileNameLen.CopyTo(clientData, 0);
fileNameByte.CopyTo(clientData, 4);
fileData.CopyTo(clientData, 4 + fileNameByte.Length);
clientSock.Connect(ipEnd);
clientSock.Send(clientData);
clientSock.Close();
Mon problème et ma question son simple...
J'execute en débogage avec un point d'arrêt, ça marche nikel, mon fichier arrive chez le pair destinataire ...
Je l'execute d'un coup, mon fichier fait 19Ko alors qu'il devrait faire 150Ko...
Le transfert asynchrone ne doit pas y être pour rien...mais la j'avoue que je ne sait pas comment contourner ce problème...
Merci beaucoup pour vos réponses.