Normalde belirtildiği gibi daha az bayt döndükten sonra anlatılacağı söylenir. Aşağıda belirtildiği gibi çok sayıda bayt okumasını sağlayan bir geçici çözüm işlevine bakın - temel olarak geçirilen arabelleğin boyutu. İşlev here'dan alınmıştır.
/// Reads data into a complete array, throwing an EndOfStreamException
/// if the stream runs out of data first, or if an IOException
/// naturally occurs.
/// </summary>
/// <param name="stream">The stream to read data from</param>
/// <param name="data">The array to read bytes into. The array
/// will be completely filled from the stream, so an appropriate
/// size must be given.</param>
public static void ReadWholeArray (Stream stream, byte[] data)
{
int offset=0;
int remaining = data.Length;
while (remaining > 0)
{
int read = stream.Read(data, offset, remaining);
if (read <= 0)
throw new EndOfStreamException
(String.Format("End of stream reached with {0} bytes left to read", remaining));
remaining -= read;
offset += read;
}
}
Söyleyecek ilk okuyan bu yöntemi kullanabilirsiniz takip edecek bayt sayısını temsil etmelidir 2 byte tamsayı. Sonra bir kez daha okuyorsunuz, ancak şimdi , iki byte tamsayıda belirtildiği gibi çok sayıda bayt okuyor. ve sonra verileri kendisi -
Ama bunun işe yaraması için, açıkça gönderen ilk takip edecek verilerin uzunluğunu temsil eden iki bayt tamsayı göndermek zorundadır.
Böylece temelde boyut iki bir bayt dizi işlevi yukarıda çağrı ilk (veri uzunluğunu elde etmek için) ve daha sonra bu 2 bit tamsayı (veri almak için) 'de gösterildiği gibi boyutu olan bir bayt dizisi ile.
NetworkStream
'dan okumak için bunu kullanabilirsiniz. Bu konuyla ilgili daha fazla reading.
Ağdan ne kadar veri geldiğini görmek için 'sock.Available' kutusunu işaretleyebilirsiniz. Not, daha sonra daha fazla veri alabilirsiniz. – ebyrob
Evet, 64 bayt ayrıldı. Çağrı almadan önce tahsis edilirler, bu nedenle verilerin gerçek boyutunun ne olacağını bilen var mı? Hiç görmediğiniz bir paketi sarmak için bir parça sicimi doğru uzunlukta kesmek gibi olurdu. Kristal küreye ihtiyacın var. – phoog