我有一个函数,它将数组作为参数。然后,函数将未知长度的信息填充到数组中。那么,我如何创建一个数组来存储长度未知的消息呢?因为我不能指定数组的大小,因为我不知道它将要存储的消息的大小。
这样会有效吗?
byte [] array;
function (array);然后数组的大小将取决于它所填充的消息的大小?如果这不可能,我该怎么做?
我需要数组是它所填充的消息的确切大小,所以我不能仅仅指定数组的随机大小来适应消息。
补充意见如下:
public int ReceiveFrom( byte[] buffer, int offset, int size,
SocketFlags socketFlags, ref EndPoint remoteEP ) 发布于 2011-12-31 00:04:42
关于使用
public int ReceiveFrom( byte[] buffer, int offset, int size,
SocketFlags socketFlags, ref EndPoint remoteEP ) 你应该在循环中使用这个。您正在一次接收全部消息(流)的一部分。由你来决定你需要哪一部分。可以选择将其余部分向下移动,并在下一次调用中指定一个offset。
byte[] buffer = new byte[1024];
ínt n;
do
{
n = ReceiveFrom(buffer, 0, buffer.Lenght, ...);
if (n > 0)
// process n bytes in buffer
} while (n > 0);发布于 2011-12-30 23:45:44
您可以使用一个列表,然后一旦您的消息被填充,请调用ToArray
编辑
示例:
List<byte> message = new List<byte>();
message.Add(/*your byte*/);
//More Adds
function(message.ToArray());发布于 2011-12-30 23:42:44
你可以用列表代替。尽管可能,您不需要设置预定的长度,列表将随着更多对象的添加而展开。
https://stackoverflow.com/questions/8685096
复制相似问题