Je n'arrive pas à transférer un fichier à un client à partir d'un programme serveur. Quelques problèmes que j'aimerais aborder. La première est que je fais le tableau d'octets 6000 octets grand et c'est toujours cette taille. Y a-t-il un moyen de maintenir la bonne taille de fichier? Aussi avec la façon dont le code est maintenant, le programme se bloque. Cela fonctionne quand je le retire de la boucle while du côté client. Aidez-moi!!Utilisation d'un NetworkStream pour transférer un fichier
Client:
private void button1_Click(object sender, EventArgs e)
{
BinaryWriter binWriter;
int i = -1;
Byte[] bytes = new Byte[6000];
NetworkStream clientStream = connTemp.GetStream();
byte[] outstream = Encoding.ASCII.GetBytes(txtMessage.Text);
clientStream.Write(outstream, 0, outstream.Length);
while (i != 0)
{
try
{
if (clientStream.CanRead)
{
i = clientStream.Read(bytes, 0, bytes.Length);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
break;
}
}
binWriter = new BinaryWriter(File.Open("C:\\SeanLaunch\\log.rxlog",FileMode.Create));
binWriter.Write(bytes);
binWriter.Close();
}
}
Serveur:
Byte[] fileToSendAsByteArray = new Byte[6000];
fileToSendAsByteArray = File.ReadAllBytes("C:\\Launch\\Test.rxlog");
stream.Write(fileToSendAsByteArray, 0, fileToSendAsByteArray.Length);
EDIT !!!: Je résolu le problème en boucle.
Je en ai besoin de coller à .Net 3.5 –
@Sean P, I a ajouté un exemple d'implémentation pour une 3,5 fonction CopyStream compatible. Ceux-ci peuvent être trouvés partout sur Internet, ils sont à la pelle. –
Je pense que vous avez peut-être mal compris ma question. Je n'ai aucun problème pour faire passer le fichier. Mon problème est que le fichier est toujours le byte []. Y at-il un moyen de réduire à la taille réelle? Je suis en train de débattre en passant d'abord la taille du fichier puis en initialisant l'octet [] à la bonne taille. –