当前位置:  编程技术>.net/c#/asp.net

如何使用 .Net Remoting 实现定向广播

    来源: 互联网  发布时间:2014-08-30

    本文导语:  相对于 WebService而言,使用.Net Remoting技术的客户端能够订阅服务器端事件。 利用该技术作一个简单而又典型的应用,信息广播程序是一个不错的选择。 以下代码是一个简单的广播程序。 服务端: 代码: class Program { static ...

相对于 WebService而言,使用.Net Remoting技术的客户端能够订阅服务器端事件。

利用该技术作一个简单而又典型的应用,信息广播程序是一个不错的选择。
以下代码是一个简单的广播程序。

服务端:

代码:
class Program
{
static void Main(string[] args)
{
BinaryServerFormatterSinkProvider sfsp = new BinaryServerFormatterSinkProvider();
sfsp.TypeFilterLevel = TypeFilterLevel.Full;
Hashtable props = new Hashtable();
props["port"] = 8086;
TcpChannel channel = new TcpChannel(props, null, sfsp);
ChannelServices.RegisterChannel(channel, false);
SayHello sayHello = new SayHello();
RemotingServices.Marshal(sayHello, "SayHello");
Console.ReadKey();
sayHello.Say("Mike", "Hello, Mike");
Console.ReadKey();
sayHello.Say("John", "Hello, John");
Console.ReadKey();
}
}

客户端:

代码:
class Program
{
static void Main(string[] args)
{
BinaryServerFormatterSinkProvider sfsp = new BinaryServerFormatterSinkProvider();
sfsp.TypeFilterLevel = TypeFilterLevel.Full;
Hashtable props = new Hashtable();
props["port"] = 0;
TcpChannel channel = new TcpChannel(props, null, sfsp);
ChannelServices.RegisterChannel(channel, false);
SayHello sh = (SayHello)Activator.GetObject(typeof(SayHello), "tcp://localhost:8086/SayHello");

SayEventReappear re = new SayEventReappear();
re.ClientId = "John";
sh.OnSay += new SayHandler(re.Say);
re.OnSay += new SayHandler(re_OnSay);
Console.ReadKey();
}
static void re_OnSay(string text)
{
Console.WriteLine(text);
}
}

远程对象、委托及事件重现器(需同时部署在服务端及客户端):

代码:
public class SayHello : MarshalByRefObject
{
public event SayHandler OnSay;
public void Say(string clientId, string text)
{
if (this.OnSay != null) this.OnSay(text);
}
}
public delegate void SayHandler(string text);
public class SayEventReappear : MarshalByRefObject
{
public event SayHandler OnSay;
public void Say(string text)
{
if (this.OnSay != null) this.OnSay(text);
}
}

信息广播程序就这样完成了。

 1 2 下一页 尾页

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • 弱智问题:我们怎么才知道要使用的方法需要实现什么接口才能使用这个方法呢?
  • 使用java jdk中的LinkedHashMap实现简单的LRU算法
  • 请问谁能讲讲使用软件实现的mcu原理。
  • 在Python3中使用urllib实现http的get和post提交数据操作
  • 可不可以在程序中直接使用ftp客户端的函数实现文件传输?
  • 使用libpcap实现抓包程序的步骤及代码示例
  • 如何使用http协议实现流媒体的传输?
  • juqery的python实现:pyquery学习使用教程
  • 使用JavaScript实现的Flash运行环境 Gordon
  • 使用Applet能不能实现基于浏览器的打印呢???
  • 请问使用或安装什么软件能够实现Win2000下访问Linux分区?
  • 急急!!!高分求助,关于实现LINUX软件的使用限制问题
  • 在ACC下不使用循环怎样实现,读取文件指定行的数据.
  • 请教使用openobex库实现蓝牙传输的问题
  • 如何使用shell文件实现linux环境下的挂载功能,具体代码!!
  • Linux下的Socket通信如何断开连接的端口从而实现重复使用该端口
  • 怎样在不使用offices产品开启WORD下实现将WORD内容转化为图片的格式
  • python使用循环实现批量创建文件夹示例
  • 使用实现状态栏?
  • 高分求救怎样使用libnet实现TCP的封堵技术!!!!
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • Python不使用print而直接输出二进制字符串
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • Office 2010 Module模式下使用VBA Addressof
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • c#中SAPI使用总结——SpVoice的使用方法


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3