微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

silverlight 2(Beta)中的Socket应用示例

      注:本文的代码示例摘自50 New Silverlight 2 Beta 1 Screencasts 视频教程系列.

     作为silverlight 2中新加入的特性,Sockets 会帮助我们开发功能强大,灵活高效的网络程序.
原本我想自己写一个例子来着,但在网上看了一遍,发现Mike Taulty已经作了一套教程来实践sl2.0
中的新特性. 所以我就依葫芦画瓢,按教程中的步骤走了一遍,发现的silverlight2 中进行socket开
发与我们平时写socket应用没什么太大的分别.因为大家平时都很忙,相信也没多少时间去听什么课
程,所以我就把这个实例的开发步骤在这里一个罗列,看看把"大象关进冰箱"到底要用几步,呵呵:)


    步骤1:  建立一个console的服务端项目

      因为是socket开发,肯定要有一个sever端,因为是演示,所以示例中直接将服务器端的侦听代码
写入了main()函数代码段如下:

static   void  Main( string [] args)
{
    Console.WriteLine(
" 使用Silverlight Socket 发送信息演示: " );
    Console.WriteLine(
================================================== "" );
    Socket socket 
= new  Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    socket.Bind(
 IPEndPoint(IPAddress.Any,  4502 ));
    socket.Listen(
5 );
    
while  ( true )
    {
        Socket s 
 socket.Accept();
        Thread t 
 Thread(()  =>
        {
            
try
            {
                
)
                {
                    
byte [] buffer  [ 1024 ];
                    
int  receive   s.Receive(buffer);
                    
if  (receive  !=   0 )
                    {
                        Console.WriteLine(Encoding.Unicode.GetChars(buffer,0);">, receive));
                    }
                }
            }
            
finally
            {
                s.Close();
            }
        });

        t.Start();
    }
}


     这里基本上都是开发socket应用时常用的类,我就不多说了,相信搞过socket开发的朋友一看便知.


步骤2:
创建silverlight Application 项目(也就是我们说的client)

      将下面的xaml代码放入Page.xaml中

< UserControl  x:Class ="SocketClient.Page"
    xmlns
="http://schemas.microsoft.com/client/2007"
    xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml"
    Width
="400"  Height ="300" >
    
Grid  x:Name ="LayoutRoot"  Background ="White"  ShowGridLines ="True"
        
Grid.RowDeFinitions 
            
RowDeFinitio /> </ Grid.RowDeFinitions
       
        
TextBox  ="txtToSend"  Grid.Row ="0" Button  Grid.Row ="1"  Click ="OnSend"  Content ="Send"  Margin ="20" Grid
UserControl >

      然后将下面的cs代码放入Page.xaml.cs文件
 

public partial class  Page : UserControl
{
    



Socket socket;

    
// 发送信息按钮的单击事件       OnSend( object  sender, EventArgs args)
    {
        
[] bytes   Encoding.Unicode.GetBytes(txtToSend.Text);
        socket 
socketasynceventargs socketArgs   socketasynceventargs()
        {
            RemoteEndPoint 
 DnsEndPoint(
               Application.Current.Host.source.DnsSafeHost,0);">)
        };
        socketArgs.Completed 
+=  OnoperationCompleted;
        socketArgs.UserToken 
 bytes;
        socket.ConnectAsync(socketArgs);
    }

    
将数据放入buffer并进行异步发送  OnoperationCompleted( socketasynceventargs e)
    {
        e.Completed 
-=  OnoperationCompleted;
        
[])e.UserToken;
        socketasynceventargs sendArgs 
 socketasynceventargs();
        sendArgs.SetBuffer(bytes, bytes.Length);
        sendArgs.Completed 
 OnSendCompleted;
        socket.SendAsync(sendArgs);
    }

    
发送完成后,关闭当前socket链接  OnSendCompleted( socketasynceventargs e)
    {
        socket.Close();
    }


}
   
      这样,程序开发就完成了.下面进行第三步,演示(如下图):

    


   
      好了,今天的内容就到这了:)

      下载源码请 点击这里:)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐