如何判断remoting的客户端已经连接上服务端

 我来答
xiangjuan314
2016-07-05 · TA获得超过3.3万个赞
知道大有可为答主
回答量:2.9万
采纳率:0%
帮助的人:3133万
展开全部
1:无论服务器是否在线,客户端的代理对象好像都是可以创建的。
2:保险的做法是,远程端提供一个void IsOnline()函数,每隔1分钟(或你需要的时间段)调用一次,如果,没抛错,就在线。
3:C#是无法完全意义上实现检测实时在线的,比如远程机器网线断开或死机,就不会立刻通知到本机,必须使用2中的心跳办法。
至于心跳,给你个例子:
模拟通信中的客户端。客户端在运行过程中,服务器每隔一段的时间会给客户端发送心跳数据。客户端启动一个线程,每3秒检测是否收到心跳数据,如果没有心跳数据,则告诉自己已经和服务器断开连接。代码如下:

Thread t;
AutoResetEvent _autoResetEvent = new AutoResetEvent(false);

private void button1_Click(object sender, EventArgs e)
{
t = new Thread(new ThreadStart(delegate
{
while (true)
{
//等3秒,3秒没有信号,显示断开
//有信号,则显示更新
bool re = _autoResetEvent.WaitOne(3000);
ShowRe(re);
}
}));
t.Start();
t.IsBackground = true;
}

void ShowRe(bool re)
{
label1.BeginInvoke(new MethodInvoker(delegate
{
if (re)
{
label1.Text = DateTime.Now.ToString() + "保持连接状态";
}
else
{
label1.Text = DateTime.Now.ToString() + "断开,需要重启";
}
}));
}

//模拟服务器发送心跳数据。
private void button2_Click(object sender, EventArgs e)
{
_autoResetEvent.Set();
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式