VisualC#建立简单消息传递系统

VisualC#建立简单消息传递系统


Author:unknown&;nbspFrom:Internet摘要: 本文讨论基于套接字(socket)的体系结构以及怎样建立一个高效的、易于使用的、可以同时在PC和Pocket PC上运行的消息传递(message-passing)系统。



套接字和消息



   目前,大多数Web服务和所有的远程应用程序都使用了远程过程调用(remote-procedure-call,RPC)方法。你所做工作好像是在调用一个函数,但是在其后台执行了大量的操作以确保它在服务器上发生。在较低的层次,系统是在两台计算机之间传递消息,但这是不可视的。



   然而,当你转换到套接字操作的时候,你就在纯粹的基于消息的系统中编程了。这会改变你编写的代码的类型,因为读取返回的数据的唯一途径是通过消息。它与使用无返回值或输出参数的.NET类有点类似,在这些情况下所有的返回信息都需要通过事件传递。



   由于我希望服务器程序告诉客户端什么时候应该改变曲目,使用消息就很有利,因为信息可以从服务器到达客户端,不需要客户端明确地请求该信息。但是,它要求你使用不同的方式达到目标。



   在解释所有操作之前,我想先谈论一点点安全性方面的问题。如果你在自己的计算机上打开了某个端口,其它人可能利用这个端口做不利的事情。他们可能希望写入没有意义的信号,以确定自己是否能够控制你的计算机或者使它崩溃。当你编写这类应用程序的时候考虑一下这种可能性是必要的。我的例子将运行在防火墙后面的网络上,所以我感觉到相对安全。



简单的套接字



   我从建立一个服务器程序开始,它能给一个整数加上1,下面是服务器端代码:




 
        public static void Main()

      {

      IPAddress localAddr = IPAddress.Parse("127.0.0.1");

      TcpListener listener = new TcpListener(localAddr, 9999);

     

      Console.WriteLine("Waiting for initial connection");

      listener.Start();

      Socket socket = listener.AcceptSocket();

      Console.WriteLine("Connected");

      NetworkStream stream = new NetworkStream(socket);

      BinaryReader reader = new BinaryReader(stream);

      BinaryWriter writer = new BinaryWriter(stream);

     

      int i = reader.ReadInt32();

      i  ;

      writer.Write(i);

      }  (2005-9-05:07:40)

 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
 您可能对 [C#] 的这些文章也感兴趣:

全面剖析VB.NET(4)
C#进阶(八)
C#代码关闭WindowsXP
.NET体系结构(一)
Microsoft.NETRomoting框架简介
用C#编写发手机中文短信息Windows服务
详解.NET的RAD功能
多线程在VisualC#网络编程中的应用
用VisualC#来获得计算机的分辨率
C#进阶(二)