打开APP
未登录
开通VIP,畅享免费电子书等14项超值服
开通VIP
首页
好书
留言交流
下载APP
联系客服
silverlight 2(Beta)中的Socket应用示例 - 代震军BLOG - 博...
miky
>《SilverLight(银光)》
2008.06.11
关注
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(
"
==================================================
"
);
Console.WriteLine(
""
);
Socket socket
=
new
Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Bind(
new
IPEndPoint(IPAddress.Any,
4502
));
socket.Listen(
5
);
while
(
true
)
{
Socket s
=
socket.Accept();
Thread t
=
new
Thread(()
=>
{
try
{
while
(
true
)
{
byte
[] buffer
=
new
byte
[
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
/>
<
RowDefinition
/>
</
Grid.RowDefinitions
>
<
TextBox
x:Name
="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;
//
发送信息按钮的单击事件
void
OnSend(
object
sender, EventArgs args)
{
byte
[] bytes
=
Encoding.Unicode.GetBytes(txtToSend.Text);
socket
=
new
Socket(AddressFamily.InterNetwork, SocketType.Stream,
ProtocolType.Tcp);
SocketAsyncEventArgs socketArgs
=
new
SocketAsyncEventArgs()
{
RemoteEndPoint
=
new
DnsEndPoint(
Application.Current.Host.Source.DnsSafeHost,
4502
)
};
socketArgs.Completed
+=
OnOperationCompleted;
socketArgs.UserToken
=
bytes;
socket.ConnectAsync(socketArgs);
}
//
将数据放入buffer并进行异步发送
void
OnOperationCompleted(
object
sender, SocketAsyncEventArgs e)
{
e.Completed
-=
OnOperationCompleted;
byte
[] bytes
=
(
byte
[])e.UserToken;
SocketAsyncEventArgs sendArgs
=
new
SocketAsyncEventArgs();
sendArgs.SetBuffer(bytes,
0
, bytes.Length);
sendArgs.Completed
+=
OnSendCompleted;
socket.SendAsync(sendArgs);
}
//
发送完成后,关闭当前socket链接
void
OnSendCompleted(
object
sender, SocketAsyncEventArgs e)
{
socket.Close();
}
}
这样,程序开发就完成了.下面进行第三步,演示(如下图):
好了,今天的内容就到这了:)
下载源码请
点击这里
:)
posted on 2008-05-30 11:21
代震军
阅读(1793)
评论(15)
编辑
收藏
所属分类:
silverlight
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报
。
打开APP,阅读全文并永久保存
查看更多类似文章
猜你喜欢
类似文章
【热】
打开小程序,算一算2024你的财运
.net 3.5平台上的Socket开发
silverlight中CheckBox在DataGrid的全选/取消
一步一步学Silverlight 2系列(3):界面布局
Prism简介
Expression Blend实例中文教程(3)
Silverlight & Blend动画设计系列四:倾斜动画(SkewTransform...
更多类似文章 >>
生活服务
热点新闻
留言交流
回顶部
联系我们
分享
收藏
点击这里,查看已保存的文章
导长图
关注
一键复制
下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!
联系客服
微信登录中...
请勿关闭此页面
先别划走!
送你5元优惠券,购买VIP限时立减!
5
元
优惠券
优惠券还有
10:00
过期
马上使用
×