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

silverlight 2(Beta)中的Socket应用示例,第1张

概述      注:本文的代码示例摘自50 New Silverlight 2 Beta 1 Screencasts 视频教程系列.      作为silverlight 2中新加入的特性,Sockets 会帮助我们开发功能强大,灵活高效的网络程序. 原本我想自己写一个例子来着,但在网上看了一遍,发现Mike Taulty已经作了一套教程来实践sl2.0 中的新特性. 所以我就依葫芦画瓢,按教程中的步       注:本文的代码示例摘自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 
            
RowDeFinition  /> </ 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
{
    

@H_215_301@

@H_215_301@

Socket socket;

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

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

    
发送完成后,关闭当前socket链接  OnSendCompleted( @H_215_301@

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

    

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

      下载源码请 点击这里:) 总结

以上是内存溢出为你收集整理的silverlight 2(Beta)中的Socket应用示例全部内容,希望文章能够帮你解决silverlight 2(Beta)中的Socket应用示例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1055813.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存