欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

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

更新时间: 2014-01-05 02:38:27 责任编辑: Author_N1

 

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

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

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

异常操作,可能是因为发送的速度太快(特别是 LZ 提到的单步就不会出错可以验证这一点),将发送速度降低一些试试吧。例如:发送后,等发方回应数据接收到再发送下一包数据。
--参考方法--
引用:
wp是不是在内存使用上限制,我压低了传输速度之后倒是不会卡住了,但是传到一半的时候接收端(手机)抛出了OutOfMemory异常。
我用的是个300m+的文件。


是的,有内存限制。
wp7是90M
wp8好像是200M
wp8.1好像是300M.
--参考方法--
引用:
Quote: 引用:

粘包了吧这是

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

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

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:38:27
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/12479/
本文WWW.DOC100.NET DOC100.NET版权所有。