通过将文件分成单独的事务,然后重新组合所有字节,我已经能够从Windows Mobile Machine向远程桌面发送大文件(大于8000字节)。
这是一个很大的痛苦,我想立即发送所有数据。我可以在.Net 3.0常规框架上做到这一点就好了。
有什么想法吗?
这是按需求的一部分(虽然我不确定代码是否有帮助,因为它更像是一个概念性问题)
byte[] TableData = new byte[length];
if (length > 8000)
TableData = new byte[8000];
int numTimes = (int)length / 8000;
numTimes++;
for (int i = 0; i < numTimes; i++)
{
if (i < numTimes - 1)//not the last stream
TableData = new byte[8000];
else
TableData = new byte[length - (8000 * i)];
ms.Read(TableData, 0, TableData.Length);
sendSock.Send(TableData);
}
答案 0 :(得分:1)
你是如何通过套接字发送文件的? 有几种方法,但我从来没有见过这一个。 您不需要为每个发送创建缓冲区,只需创建一次超出循环并使用它。
从我的Windows Mobile中我使用这样的东西:
byte[] buffer = new byte[8*1024]; // 8kb is ok
int iReads=0;
while ((iReads=ms.Read(buffer, 0, buffer.Length)) > 0)
{
sendSock.Send(buffer, 0, iReads);
}