1 pièce(s) jointe(s)
Comment envoyer et recevoir un fichier via le socket TCP
Bonjour tout le monde alors voila je suis nouveaux sur ce forum est voici mon problème qui me tracasse depuis deux jour j'essaie d'envoyer des fichiers via le socket tcp masi le problem c'est que le ficher n'arrive pas complètement je ne comprends pas pourquoi j'ai aussi remarqué que la taille du fichier est recu est toujours de 293 ko ... voici mon code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
// ici j'envoie une demamnde au server pour dire qui'l va recoivr un fihier bientot
Connection.send_command(Commands.update_request);
// ptit pause
Thread.Sleep(80);
byte[] FileBytes;
//lecture du fichier a envoyer et le metter dans une variable type bytes array
using (FileStream FS = new FileStream(ofg.FileName, FileMode.Open))
{
FileBytes = new byte[FS.Length];
FS.Read(FileBytes, 0, FileBytes.Length);
}
// envoyer le tout vers le server
Connection.targetClient.Send(FileBytes); |
Ensuite côté serveur :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
private void receiveInfo()
{
// ceci est la method qui traite les donnes recue
byte[] buffer = new byte[300000];
int received = 0;
try
{
received = Connection.clientSocket.Receive(buffer);
}
catch (SocketException)
{
Connection.clientSocket.Close();
Connection.clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Connection.makeConnection();
}
if (received == 0)
return;
byte[] data = new byte[received];
Array.Copy(buffer, data, received);
if (update.isupdate == true)
{
// ecriture des données recu vers un ficher dans le dossier temp..
File.WriteAllBytes(Path.GetTempPath() + "\\test01.txt", data);
update.isupdate = false;
// update.process_update(data);
}
} |
Pièce jointe 601069