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

silverlight 连接 socket 通讯

文章转自 http://hi.baidu.com/paycom/blog/item/9acad1f9acc96b5f242df2cb.html

 

 
 
silverlight 2(Beta)中的Socket应用示例
2008-07-20 00:49
步骤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
{
    



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();
     }


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

    


    
   

 

 

  

 

 这几天一直在搞这个东西,网上的前辈们搞的有一个很好的实例,但是那个是以前 silverlight 1 可以用的版本,现在的2根本用不鸟,需要配置一个安全策略服务程序跑起来,让silverlight程序能够通过挂起的连接通讯  ···晕 不能上附件? 

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

相关推荐