mono,.net,异步socket

.net的异步 socket有两种形式

 

1,和其他async io类似的 iasyncresult

 

2,3.5后新增的socketasyncargs。。

 

据msdn说 第二种的性能有极大的提高。。我简单测试过。。在 accept socket这里,,速度是很快,大约为前者的3-4倍

 

测试环境 win xp sp3

前者 1秒钟大约能accept 500个socket

 

后者 可以达到 2000个。。

 

在处理数据收发 方面 两者的开销差不多,没有表现出特别明显的差异。。。

 

但是在mono上就不是这么一回事了。。。mono 2.6.x后也多了一个 socketasyncargs的实现。但是文档是没有的。。iasyncresult 有文档。。描述和msdn大致上差不多。。。

 

在mail-list上有人提过mono上的socketasyncargs是用thread来对应每一个请求性能很低 云云。。再进一步的资料就没有了,于是决定一试

 

测试环境 ubuntu 9.10 desktop.. mono是从svn下的。2.8 preview的版本。

 

默认的 ulimit -n 是 1024.。

 

iasyncresult 可以连接到1019.。然后报描述符溢出。。正常

 

socketasyncargs 只能连接到501 左右。。

 

修改 ulimit -n 到 12000。。测试 10000个 长连接

 

iasyncresult 可以正常工作。。 socketasyncargs 在连接到8601的时候 直接退出 报了一个assert 声明。。具体是什么没看。

 

由此推断。。socketasyncargs在mono上 没有使用到epoll,实现上也存在问题。。。

 

我看过 ice 3.4.1的代码,.net版本依然 还是使用 iasyncresult 并没有因为 socketasyncargs高效而替代。我想很有可能是为了兼容mono的原因。。。

 

如果要写一个跨平台的基于.net async socket server 建议还是使用 iasyncresult。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1。这个都是自己慢慢摸索的。mono for andriod ,资料真的太少了。 2.正在做安卓手机的项目。选择这条路都不知道能不能坚持下去。 3.希望有同样迷惑的人,照亮一点前面的路,也希望能照亮自己。 4.下面的代码运行环境 VS2012 + mono for andriod 4.8 java -sdk 与 mono for andriod 4.8 见下面的网盘 希望到时,这个网盘没有被封。 http://pan.baidu.com/s/1sjqMsqT 安装教程 http://www.51mono.com/article/show/172 http://www.51mono.com/article/show/96 安卓模拟器,推荐使用 Genymotion。 具体的安装教程,就请网上找吧。我实在没有力气了。 不过在模拟时,还是有点不够爽。 由于是 mono for andriod 专业破解版,所以可以直接使用 真机运行的。 我就是用 小米3 来运行。问题比较少。 另外要吐槽一下的是,开发这个手机APP,真的很耗内存。为此我不得不把我的老爷机换了4G的内存条。 由于是老爷机,内存条好贵的呀。 5,windows 开发环境 是 win8.1. 32位。 6.希望我啰嗦的这么多信息对你有用。 7.下面是正题了。 这个压缩包,包含 C#写的服务端。 和 mono for andriod ---c# 写的手机客户端。 实现简单的 Socket --TCP/IP 通信。 其实,使用的类 和语法代码与 普通PC机的一样。但 手机客户端,还是有点点区别。 在pc客户端,使用线程收取 信息,然后打印到UI控件上,是使用委托进行。 在手机APP,有一个专门的方法来把这个信息寄送到 UI线程,然后在 UI控件上进行显示。 在例子,有体现。 8.好了,就这么多了

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值