.net 利用Socket 编程

  .net 框架对Socket编程的封装已经比较完善了,所以你如果了解了Socket原理的话,利用其框架应该就可以写出简单的程序来了。

服务端:

   1)新建一个Socket对象,对服务端的某个端口进行监控(比如说是1200),用的Socket的方法为:

         初始化一个Socket对象 new Socket();该方法有2个重载函数。

         Socket  Listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

    2)调用新建对象的Bind()方法 绑定服务端的ip和端口。

                IPAddress ipAddress = Dns.GetHostAddresses("127.0.0.1")[0]; //用 127.0.0.1 表示本地
                IPEndPoint lpend = new IPEndPoint(ipAddress, 1100);
                Listener.Bind(lpend);

   3)调用对象的Listen()方法,使其处于监听状态

                Listener.Listen(10) ; 后面的10 表示最大的监听列表数,你可以修改其值。

 

   4)开始监听 调用对象的Accept()方法,该方法返回一个新的连接对象,

      while (true)
                { 
                    //新建了一个链接,在获取新链接对象之前,线程将一直处于挂起状态
                    Socket handler = Listener.Accept();

               }

   5)获取客户端发来的消息,并处理,及回发。调用Receive()方法 //先定义一个字节数组,来存储客户端发来的消息。

            byte[] buffer=new byte[1024];

           int length=handler.Receive(buffer); 如果是中文,将进行一定格式的编码和解码工作

           string result=.Encoding.UTF8.GetString(buffer, 0, length); //result 就是从客户端发过来的消息。

  6) 发送消息到客户端  调用Send()方法

            handler.Send(Encoding.UTF8.GetBytes("xxxxxx"));

 

客户端

   1)新建一个Socket 对象,指定ip和端口,该ip和端口要和服务器端指定的一致。然后调用Connect()方法,进行连接。

            IPAddress ipAddress = Dns.GetHostAddresses("127.0.0.1")[0];
            IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, 1100);
            sender = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            sender.Connect(ipEndPoint);

 2) 向服务器端发送消息。 send()方法

             byte[] buff = Encoding.UTF8.GetBytes("xxxxx你要发送的消息");
             sender.Send(buff);

3)获取从服务器返回的消息,和服务端一样,要指定数据存储的变量

           byte[] buffer=new byte[1024];

           int length=sender.Receive(buffer);

         string result=Encoding.UTF8.GetString(buffer, 0, length);

这是简单的代码实现,并没有使用线程等处理方式,以及对象的释放等。不过我的例子中有用,可以参考一下。在这里写一来可以做笔记,而来可以和大家交流一下,文采不行,请大家不要介意。

代码:测试文件   

 

    

posted @ 2010-02-08 17:26  DreamZero  阅读(729)  评论(1编辑  收藏  举报