re: 关于“海盗分金”的答案及思考 123234356457567 2008-07-23 14:23
扯淡!
什么1-3死后,剩4、5???
投票必须多数反对才杀死分配者,剩了俩人还投票个屁阿!
这是谁出的标准答案阿,idiot!
注意:System.Net.CookieContainer cookieContainer = new System.Net.CookieContainer();
为全局定义。@赵俊
我发现根本就执行不到
public bool Check(string userName,string password)
方法,点击调用以后页面直接转到Login.asmx里了,不知道哪里执行错了!
re: 关于“海盗分金”的答案及思考 zzy1 2008-02-04 10:28
最佳答案:(98.0.1.1.0) 推理:假设1死,2提出99-0-0-1方案,2和5赞成就结束.所以1不管什么方案2都会反对;5得1棵时可赞成也可反对,得2棵肯定赞成;而3和4没得时可赞成也可反对,得1棵肯定赞成,所以最佳方案为98-0-1-1-0
@Microshaoft
@AndyHai
...
首先感谢关注并提供解决方法。
综合以上两位朋友提供的解决措施,其实都是基于对客户端发出请求,捕获到异常(即无响应)后认为客户端不复存在从而将客户端释放。我也想过类似解决办法(即文中提到的“服务器端将连接失败的客户端直接取消注册”),但总感觉对客户端不够负责任,因为如果客户端出现暂时不能响应后将被永久清除,从而无法继续接收服务器端事件。但除此之外恐怕也没有合适的解决办法,只能如此了。
基于这种思路,将远程对象中的 Say 方法作如下修改即可:
public void Say(string clientId, string text)
{
string[] keys = new string[this.reDict.Count];
this.reDict.Keys.CopyTo(keys, 0);
foreach (string key in keys)
{
if (key == clientId)
{
try
{
this.reDict[key].Say(text);
}
catch
{
this.reDict.Remove(key);
}
}
}
}
关于Remoting客户端生存期的问题,我有解决方法:使用生存期租约主办方(ISponsor)
MarshalByRefObject对象有个GetLifetimeService()方法,可以获取到ILease 类型的对象(也可以通过重载InitializeLifetimeService方法来获取),用于控制此实例的生存期策略。 ILease又有个Register方法,Register方法必须提供一个ISponsor对象,按MSDN的说法,这个方法可以“在不续订租约的前提下为该租约注册主办方。 ”简单的说,我们可以给远程对象设置生存期(比如说1分钟),并注册一个ISponser对象,当生存期到了之后,会自动调用ISponser对象的Renewal方法,在这个方法中,必须返回TimeSpan,这个值即是该远程对象的生存期续订时间,如果我们需要继续保留这个远程对象,可以设置为要保留的时间数(如1分钟);如果设置为0,则表示立即放弃这个远程对象,该对象将会被分布式垃圾回收器回收。
基于上面的思想,我们可以让远程对象自身实现ISponsor,实现Renewal方法。即自己成为自己的生存期租约主办方,当生存期到后,由于系统会调用Renewal方法,我们可以在这个方法中回调客户端事件,如果回调发生异常,说明是客户端已经离线,方法返回TimeSpan.Zero即可;如果回调成功,返回1分钟的时间,续订远程对象。
public class MyClientSponsor : MarshalByRefObject, ISponsor
{
public EventHandler OnPingEvents;
public override object InitializeLifetimeService()
{
ILease lease = (ILease)base.InitializeLifetimeService();
lease.
lease.Register(this);//为自己注册生存期租约主办方
return lease;
}
//也可以为客户端提供一个Free方法,立即释放此远程实例
public void Free()
{
ILease lease = GetLifetimeService() as ILease;
if (lease != null)
lease.Unregister(this);//调用Unregister以立即将租约状态更改为到期
}
//ISponsor的实现
public TimeSpan Renewal(ILease lease)
{
TimeSpan Ret = TimeSpan.Zero;
try
{
OnPingEvents();//这是一个客户端回调,客户端响应此事件即可,不用做什么
Ret = TimeSpan.FromMinutes(1);
}
catch
{
Ret = TimeSpan.Zero;
Free();
}
return Ret;
}
}
客户端在创建了MyClientSponsor实例后,响应OnPingEvents事件即可,如果客户端断线,远程对象即可自动到期
Remoting 的调用分为三种类型, 相关的信息在 WellKnownObjectMode 里的选项中.选择适合的选项和适当的操作可以解决你的问题.
SingleCall 每个传入的消息由新的对象实例提供服务。
Singleton 每个传入的消息由同一个对象实例提供服务。
参阅
SayHandler e = null;
Delegate[] D = this.OnSay.GetInvocationList();
foreach (Delegate d in D)
{
try
{
e = (SayHandler) d;
e ("asdasd");
}
catch
{
this.OnSay -= e;
}
}
我不熟悉Remoting,但是据我所知,通讯双方中的一方断开连接时,另一方会收到信息的,尽管是非正常中断,另一方也可以收到,原因就在于系统会在一个指定的时间间隔内检查网络连接情况,园子里的 牧野 兄曾经提到过如何修改那个参数。
关于离线取消事件订阅,可以在服务器端进行判断,(在引发事件处)
CodeDom不是这样用的,如果这样用,我觉得不如反射,既简单,性能也没多少差别。CodeDom的应用场景,应该是Create一次,查询很多次的场景。比如在动态查询中,管理员选择需要查询的字段(属性),组合生成一个新的类,编译后缓存到backstore,其他人员利用这个查询。如果不是这种场合,真的没必要用CodeDom。
无极工作室 专用QQ:408934730
网站
http://Www.9Umb.Cn 这网站是垃圾的压缩网站。。
里面有来宾留言。。看似真实。。但是和其它网站一样。都是空壳子
没有真实身份验证。。毫无真实性。。里面的来宾留言也是为了骗大家的。而且他提供的所谓骗人的网站也是为了蒙骗大家。。会员200每天能刷2WMB 235每天可换不同的号码刷黑点2WMB。。还可以终身会员 分期付款。。这都是想剥夺大家的信任。。带练级也是假的。。自己在这里受骗了。。希望大家别受骗上当。。没这么好的事。。得小便宜吃大亏!!大家记住 没有天上掉馅饼的好事!!!如果有疑问请加我QQ:593154022
下面我给你们介绍个真实的刷MB外挂
无极工作室强力打造了一款劲舞刷MB外挂
外挂名称:劲舞商城助手
外挂版本分为个人版及网吧大众版
随外挂配套刷MB教程,您可以下载观看并学习如何操作!
本工作室主页经过美化,绝对不是一般的草草了事
您可以登陆
http://www.9umb.cn查看
我们的留言本有客户对本站服务的反馈情况
如还有疑问还咨询在线QQ:408934730
工作时间:早8点~晚12点 16小时为您提供最完善的服务
1:关于刷MB:
【初级会员200元/月】,每日可刷2万MB
【普通会员400元/季】,每日可刷4万MB
【高级会员800元/年】,每日可刷6万MB
【终身会员1200元/终身】,每日可刷8万MB
2:关于喇叭:
喇叭包月 355元/月
每天为您游戏帐号激活1200个小喇叭(或者300个大喇叭)
3:关于黑点:
最新黑点价格:
100元=3万MB 200元=7万MB 300元=12万MB
黑点多买多送!
4:关于代练:
另外本工作室本着“低价格 高效率”的宗旨代练劲舞等级
每天保证最低经验80万(合作网吧+经验双倍卡)
让您在20天内从舞痴冲刺到舞神
代练时还可随时登陆网站查询当天代练进度!!
您还在考虑什么?无极工作室是您最好的福音!!
是否将上述代码粘贴在login.cs中?我这里总是报错说找不到myservice??
邮箱wangdong135@hotmail.com
可否将完整代码发我邮箱?
谢谢
re: Regulator的下载地址 The Regulator 2.0.3 2007-07-14 22:06
re: .Net程序员薪金调查 韩野 2007-05-15 15:55
永不言败,永不言悔!!
re: .Net程序员薪金调查 韩野 2007-05-15 15:54
宁波,做.net 2个月,3K/M
之前在上海做实施(delphi) 5K/M
相信自己的选择没有错!
re: Regulator的下载地址 s3 2007-04-21 12:27
问题是个英文,有中文,或是帮助不?
re: .Net程序员薪金调查 hape 2007-04-20 20:00
急招.net工程师,要求2年工作经验,独立开发
精通C#, SQL Server database. HTML, XHTML, XML, CSS 有良好的网页界面知识
工作地点:
北京
有意者请将简历发邮件至chinaskysoft@163.com 。请在E-MAIL主题中注明姓名及应聘职位。或联系13366159056
re: Regulator的下载地址 阿城 2007-04-11 16:43
用着不错,谢了,朋友!
re: .Net程序员薪金调查 游客 2007-04-06 19:22
北京紫竹桥附近,急招.net网站后台开发,要求2年工作经验,独立开发
clare999@126.com
re: .Net程序员薪金调查 许成 2007-03-19 12:27
1000多人民币
re: Regulator的下载地址 Ming* 2007-02-09 16:36
谢谢楼主
re: Regulator的下载地址 dd[匿名] 2007-01-11 15:45
这个也不行呀
re: Regulator的下载地址 ohr 2006-12-24 21:32
我也在找
下面是我一段生成数据库的代码,运行是成功的,但是结果可以创建数据库,但表,存储过程,视图等都没创建成功,可以帮我解释一下吗sql脚本放在db.sql里的,
也可以发我邮箱:chuanleihu@sina.com
' ------------------------建立数据库-------------------------------------------------
Try
Dim connStr As String = String.Format("data source={0};user id={1};password={2};persist security info=false;packet size=4096", Me.Context.Parameters.Item("server"), Me.Context.Parameters.Item("user"), Me.Context.Parameters.Item("pwd"))
'根据输入的数据库名称建立数据库
ExecuteSql(connStr, "master", "CREATE DATABASE " + Me.Context.Parameters.Item("dbname"))
'调用osql执行脚本
Dim sqlProcess As New System.Diagnostics.Process
sqlProcess.StartInfo.FileName = "osql.exe "
sqlProcess.StartInfo.Arguments = String.Format(" -U {0} -P {1} -d {2} -i {3}db.sql", Me.Context.Parameters.Item("user"), Me.Context.Parameters.Item("pwd"), Me.Context.Parameters.Item("dbname"), Me.Context.Parameters.Item("targetdir"))
sqlProcess.StartInfo.WindowStyle = Diagnostics.ProcessWindowStyle.Hidden
sqlProcess.Start()
sqlProcess.WaitForExit() '等待执行
sqlProcess.Close()
'删除脚本文件
Dim sqlFileInfo As New System.IO.FileInfo(String.Format("{0}db.sql", Me.Context.Parameters.Item("targetdir")))
If sqlFileInfo.Exists Then
sqlFileInfo.Delete()
End If
Catch ex As Exception
Throw ex
End Try
@fzzf[匿名]
代码已经过多次测试,没有问题啊。不知你指的是身份验证不能成功呢还是无法在本机找到cookie文件?
不知道搂住测试没?
我试过.代码正确,就是不写Cookie?不知道什么原因,还望楼主指点,谢谢!