TCP send vil ikke som jeg..
Hej Eksperter.Jeg har en send og receive funktion, Jeg ha brug for at sende hash af filen, og størrelen til den der modtager, men det vil ikke som jeg.
////SEND FILE////
//Send hash
Byte[] Hash = Encoding.ASCII.GetBytes(Attrib.Hash);
DataStream.Write(Hash, 0, Hash.Length);
//Send size
Byte[] Size = Encoding.ASCII.GetBytes(fs.Length.ToString());
DataStream.Write(Size, 0, Size.Length);
//Send file
T.Status = Status.Transfering;
int bytessent;
while ((bytessent = reader.Read(Buffer, 0, Buffer.Length)) != 0)
{
DataStream.Write(Buffer, 0, bytessent);
T.Transfered += bytessent;
}
////RECEIVE FILE////
S = C.GetStream();
//Get hash
while (true)
{
Buffer = new Byte[BufferLen];
S.Read(Buffer, 0, Buffer.Length);
Hash = Encoding.ASCII.GetString(Buffer).ToString();
MessageBox.Show("'" + Hash + "'", "Recv");
break;
}
//Get size
while (true)
{
Buffer = new Byte[BufferLen];
S.Read(Buffer, 0, Buffer.Length);
FileSize = Convert.ToInt64(Encoding.ASCII.GetString(Buffer).ToString());
MessageBox.Show("'" + FileSize.ToString() + "'", "Recv");
break;
}
//Receive file
Savepath = Path.Combine(Settings.DLFolder, T.Filename);
fs = new FileStream(Savepath, FileMode.OpenOrCreate);
w = new BinaryWriter(fs);
while (T.Transfered < T.TotalSize)
{
if (T.Transfered >= T.TotalSize)
break;
Buffer = new Byte[BufferLen];
byteRead = S.Read(Buffer, 0, Buffer.Length);
w.Write(Buffer, 0, byteRead);
T.Transfered += byteRead;
}
Problemet er at første gang jeg sender size, så er den rigtig, men med en masse tomme karakterer efter, anden gang er der en masse tilfældige. Hvordan sender jeg size og hash så modtager han læse det, og derefter læse af buffer for at skrive filen?
