该文章转自 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] 举报,一经查实,本站将立刻删除。