Bonjour,
Je veux faire une communication entre client/serveur, j'utilise les sockets avec des petit fichier ça marche mais avec des grand fichiers j'avais des problèmes, le client qui veux envoyer le fichier je lu le fichier en bytes apres je découpe mon fichier par partie de 20 ko, et je costruit mon paquet et j'envoie le paquet quand le serveur reçois le paquet, il ecrit dans le fichier mais ça bloque des fois dans le 3 paquet, defois dans le 11 paquets, je sais pas est ce que ma consuption est vrais???
pour le client voici le code client :
apres je découpe le filedataen paquets
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 IPAddress[] ipAddress = Dns.GetHostAddresses("localhost"); IPEndPoint ipEnd = new IPEndPoint(ipAddress[0], 5656); Socket clientSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); byte[] fileData = File.ReadAllBytes(filePath + fileName);
et pour l'envoie
Pour le serveur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 fileNameLen.CopyTo(clientData, 0); fileNameByte.CopyTo(clientData, 4); fileData1.CopyTo(clientData, 4 + fileNameByte.Length); clientSock.Connect(ipEnd); clientSock.Send(clientData); clientSock.Close();
Merci l’équipe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 while (true) { clientSock = sock.Accept(); int receivedBytesLen = clientSock.Receive(clientData); curMsg = "Receiving data..."; int fileNameLen = BitConverter.ToInt32(clientData, 0); string fileName = Encoding.UTF8.GetString(clientData, 4, fileNameLen); BinaryWriter bWrite = new BinaryWriter(File.Open(receivedPath + "/" + fileName, FileMode.Append)); ; bWrite.Write(clientData, 4 + fileNameLen, receivedBytesLen - 4 - fileNameLen); curMsg = "Saving file..."; bWrite.Close(); clientSock.Close(); }
Partager