&HttpChannel channel = new HttpChannel(0);
&ChannelServices.RegisterChannel(channel);
&faxBus = (IFaxBusiness)Activator.GetObject(typeof(IFaxBusiness),
&&"http://localhost:8080/FaxBusiness.soap");
}
呵呵,可以说客户端激活对象的方法和普通的 Remoting 客户端应用程序没有什么不同。
该写传真了!我们在窗体上放一个文本框对象,改其 Multiline 属性为 true。再放一个按
钮,负责发送传真:
private void btnSend_Click(object sender, System.EventArgs e)
{
&if (txtFax.Text != String.Empty)
&{
&&string fax = "来自" + GetIpAddress() + "客户端的传真:"&
+ System.Environment.NewLine;
&&fax += txtFax.Text;
&&faxBus.SendFax(fax);
&}
&else
&{
&&MessageBox.Show("请输入传真内容!");
&}
}
private string GetIpAddress()
{&&&
&IPHostEntry ipHE = Dns.GetHostByName(Dns.GetHostName());
&return ipHE.AddressList[0].ToString();&&&
}
在这个按钮单击事件中,只需要调用远程对象 faxBus 的 SendFax()方法就 OK 了,非常
简单。可是慢着,为什么你的代码有这么多行啊?其实,没有什么奇怪的,我只是想到发
传真的客户可能会很多。为了避免服务端人员犯糊涂,搞不清楚是谁发的,所以要求在传
真上加上各自的签名,也就是客户端的 IP 地址了。既然要获得计算机的 IP 地址,请一定
要记得加上对 DNS 的命名空间引用:
using System.Net;
因为我们严格按照分布式处理程序的部署方式,所以在客户端只需要添加公共程序集
(Common.dll)的引用就可以了。而在服务端呢,则必须添加公共程序集和远程对象程序
集两者的引用。
OK,程序完成,我们来看看这个简陋的传真机:
客户端:
评论1
最新资源