中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > .NET > C#
轻松架起远程C-S体系
作者:zlyperson 时间:2002-01-28 12:14 出处:互联网 责编:chinaitpower
              摘要:轻松架起远程C-S体系

 本文将介绍如何轻松架起远程客户/服务器体系结构,让您领略C#编成的带来的无限精简便利。
 首先,实现服务器端。代码分析如下:
//引入相应命名空间
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;

namespace ServerClass {
 //实现一个服务器和客户端将要共同进行通讯的类MyRemoteClass
 public class MyRemoteClass: MarshalByRefObject
 {
  public MyRemoteClass() {
  }
  //这个方法是服务器和客户端进行通讯的,当然也可以定义其他更多的方法
  //客户端传送一个字符串过来
  public bool SetString(String sTemp) {
   try {
    //服务器端打印客户端传过来的字符串。返回逻辑值
    Console.WriteLine("This string '{0}' has a length of {1}", sTemp, sTemp.Length);
    return sTemp != "";
   } catch {
    return false;
   }
  }
 }

 //服务器控制类,这个类只是为了控制启动和关闭服务器的作用,你也可以把它的Main放到MyRemoteClass类中去。
 public class MyServer {
  public static void Main() {
   //打开并注册一个服务
   TcpChannel chan = new TcpChannel(8085);
   ChannelServices.RegisterChannel(chan);
   RemotingConfiguration.RegisterWellKnownServiceType(
     System.Type.GetType("ServerClass.MyRemoteClass"),
     "RemoteTest", WellKnownObjectMode.SingleCall);
   //保持运行
   System.Console.WriteLine("Hit <enter> to exit...");
   System.Console.ReadLine();
  }
 }
}

 然后,实现客户端。代码分析如下:
//引入相应命名空间
using System;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
//引入服务器和客户端进行通讯的类MyRemoteClass
using ServerClass;

namespace ClientClass {
 public class MyClient {
  public static void Main() {
   try {
    //打开并注册一个TCP通道
    TcpChannel chan = new TcpChannel();
    ChannelServices.RegisterChannel(chan);
    连接服务器,获取通讯类
    MyRemoteClass obj = (MyRemoteClass) Activator.GetObject(typeof(MyRemoteClass),
       "tcp://localhost:8085/RemoteTest");
    if (obj == null)
     System.Console.WriteLine("Could not locate server");
    else
     if (obj.SetString("Sending String to Server"))
      System.Console.WriteLine("Success: Check the other console to verify.");
     else
      System.Console.WriteLine("Sending the test string has failed.");
    System.Console.WriteLine("Hit <enter> to exit...");
    System.Console.ReadLine();
   } catch (Exception exp) {
    Console.WriteLine(exp.StackTrace);
   }
  }
 }
}
编译服务器代码
csc csc /out:MyServer.exe MyServer.cs
编译客户端代码
csc /r:MyServer.exe MyClient.cs
启动服务器c:\>start MyServer
启动客户端c:\>MyClient

.Net把很多功能包装太好了,给程序员带来了很多便利,本文只是涉及了其中一个方面具体的应用。文中错误处请邮件联系zlyperson@163.net

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有