首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Windows Mobile >

wp8 使用socket TCP从计算机传输大文件

2013-10-27 
wp8 使用socket TCP从电脑传输大文件我想实现从电脑向手机传输文件的功能,目前是用socket TCP协议实现,单

wp8 使用socket TCP从电脑传输大文件
我想实现从电脑向手机传输文件的功能,目前是用socket TCP协议实现,单线程异步传输。
目前有一个很大的问题,一开始写代码的时候,我为了调试方便,是在电脑和电脑之间传输文件,不管是大文件还是小文件都没什么问题。
但是把接收的部分移植到wp的工程之后,就有一个问题,小文件(1M左右的文件)还正常,但是传输大文件(300M+的视频文件)的时候,就会卡住。打断点之后发现,这个时候发送端和接收端都没有任何动作了。如果如果从一开始就在发送或者接收的位置打上断点,然后一下一下的按F5,就不会卡住。

我想请问一下,wp的文件传输和pc有什么区别,对于这个“卡住”的问题,有什么好的解决办法吗?

代码太多,我先简单写一下传输流程
发送端listen->接收端connect-〉发送端accept并向接收端发送连接成功信息
发送端发送文件基本信息-〉接收端返回接收成功信息-〉发送端发送一段数据->接收端返回接收成功信息-〉发送端发送下一段数据……发送端发送文件发送完成信息->接收端返回接收成功信息
因为wp的socket只有异步操作,所以pc端也是用的异步操作。 socket wp8 文件传输 tcp 异步
[解决办法]
首先,要确认传输过程中有没有出现 Socket 的错误,类似于 10035 或 10054 之类的。

异常操作,可能是因为发送的速度太快(特别是 LZ 提到的单步就不会出错可以验证这一点),将发送速度降低一些试试吧。例如:发送后,等发方回应数据接收到再发送下一包数据。
[解决办法]

引用:
wp是不是在内存使用上限制,我压低了传输速度之后倒是不会卡住了,但是传到一半的时候接收端(手机)抛出了OutOfMemory异常。
我用的是个300m+的文件。


是的,有内存限制。
wp7是90M
wp8好像是200M
wp8.1好像是300M.
[解决办法]
引用:
Quote: 引用:

粘包了吧这是

那这个有什么比较好的解决办法吗?比如设置什么属性。
我现在是在发送后sleep一小段时间,虽然不会卡住了,但是这样传输速度慢了不说,而且总觉得太简单粗暴。

有开源的SUPERSOCKET,.net下面的socket库,不过没有WP版,估计得自己移植了

热点排行