如何在Compact Framework Socket中发送超过8000个字节

时间:2013-09-04 18:47:27

标签: c# sockets compact-framework

通过将文件分成单独的事务,然后重新组合所有字节,我已经能够从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);
        }

1 个答案:

答案 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);
}
相关问题