windows phone8.1 socket出现问题

mofoyiyeshu 2015-05-28 12:59:19
private async void ReceiveFromServer()
{
StreamSocket clientSock = new StreamSocket();
byte a;
try
{
HostName sh = new HostName("10.210.106.43");
await clientSock.ConnectAsync(sh, "12347");
}
catch (Exception ex)
{
clientSock.Dispose();
clientSock = null;
num.Text = "wrong connect server";
return;
}
tbFileName.Text = "ok";// 这只是一个textblock
try
{
DataReader reader = new DataReader(clientSock.InputStream);

reader.InputStreamOptions = InputStreamOptions.Partial;
var l = await reader.LoadAsync(sizeof(byte));
num.Text = l.ToString();
a = reader.ReadByte();
num.Text = a.ToString();// num也是一个textblock

}
catch (Exception ex)
{
num.Text = ex.ToString(); // num也是一个textblock
return;
}
}
手机上的结果是:tbFileName.Text = "ok";// 这只是一个textblock: 这个ok能输出,服务器那边我在linux下写的一个server端,那边显示已经连上,并每隔一秒发送一个字节,那边显示发送ok。
后面的 num.Text = ex.ToString(); // num也是一个textblock :
System.OutOfMemoryException: Insuffcient memory to continue the execution of the program.
at Windows.Storage.Streams.DataReader.LoadAsync(UInt32 count)
at App1.MainPage.<connect>d_1a.MoveNext()
这个app只是自己试验的,并没有其他功能,就只有这个,绝对不可能发生内存不够的情况,大神来看一看。thank you。
...全文
819 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wa3ha 2015-05-29
  • 打赏
  • 举报
回复
引用 3 楼 wa3ha 的回复:
[quote=引用 2 楼 mofoyiyeshu 的回复:] [quote=引用 1 楼 wa3ha 的回复:] DataReader reader = new DataReader(socket.InputStream); reader.InputStreamOptions = InputStreamOptions.Partial; await reader.LoadAsync((uint)buffer.Length); reader.ReadBytes(buffer); reader.DetachStream(); return buffer.Length;
你能详细解释一下,各个资源的回收问题么,各种流,buffer。还有datareader datawriter 什么的,用完了之后,怎样回收资源,这里面太乱了,不知道具体过程。比如说reader.DetachStream();这一句有什么用?还有dispose,等等。[/quote]http://www.it165.net/pro/html/201402/9210.html[/quote]方法都有中文注释了,自己可以看一下。
wa3ha 2015-05-29
  • 打赏
  • 举报
回复
引用 2 楼 mofoyiyeshu 的回复:
[quote=引用 1 楼 wa3ha 的回复:] DataReader reader = new DataReader(socket.InputStream); reader.InputStreamOptions = InputStreamOptions.Partial; await reader.LoadAsync((uint)buffer.Length); reader.ReadBytes(buffer); reader.DetachStream(); return buffer.Length;
你能详细解释一下,各个资源的回收问题么,各种流,buffer。还有datareader datawriter 什么的,用完了之后,怎样回收资源,这里面太乱了,不知道具体过程。比如说reader.DetachStream();这一句有什么用?还有dispose,等等。[/quote]http://www.it165.net/pro/html/201402/9210.html
mofoyiyeshu 2015-05-28
  • 打赏
  • 举报
回复
引用 1 楼 wa3ha 的回复:
DataReader reader = new DataReader(socket.InputStream); reader.InputStreamOptions = InputStreamOptions.Partial; await reader.LoadAsync((uint)buffer.Length); reader.ReadBytes(buffer); reader.DetachStream(); return buffer.Length;
你能详细解释一下,各个资源的回收问题么,各种流,buffer。还有datareader datawriter 什么的,用完了之后,怎样回收资源,这里面太乱了,不知道具体过程。比如说reader.DetachStream();这一句有什么用?还有dispose,等等。
wa3ha 2015-05-28
  • 打赏
  • 举报
回复
DataReader reader = new DataReader(socket.InputStream); reader.InputStreamOptions = InputStreamOptions.Partial; await reader.LoadAsync((uint)buffer.Length); reader.ReadBytes(buffer); reader.DetachStream(); return buffer.Length;

7,655

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧