惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
W
WeLiveSecurity
O
OpenAI News
N
News and Events Feed by Topic
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Webroot Blog
Webroot Blog
Google Online Security Blog
Google Online Security Blog
云风的 BLOG
云风的 BLOG
N
News | PayPal Newsroom
H
Hacker News: Front Page
博客园_首页
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
The Last Watchdog
The Last Watchdog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
H
Heimdal Security Blog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
S
Schneier on Security
宝玉的分享
宝玉的分享
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Y
Y Combinator Blog
Cyberwarzone
Cyberwarzone
Microsoft Security Blog
Microsoft Security Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
GbyAI
GbyAI
Cloudbric
Cloudbric
TaoSecurity Blog
TaoSecurity Blog
人人都是产品经理
人人都是产品经理
P
Palo Alto Networks Blog
M
MIT News - Artificial intelligence
G
GRAHAM CLULEY
C
Check Point Blog
Apple Machine Learning Research
Apple Machine Learning Research
Last Week in AI
Last Week in AI
T
Troy Hunt's Blog
L
Lohrmann on Cybersecurity
www.infosecurity-magazine.com
www.infosecurity-magazine.com
P
Proofpoint News Feed
Blog — PlanetScale
Blog — PlanetScale
量子位
博客园 - 聂微东
S
Securelist
博客园 - 三生石上(FineUI控件)
F
Full Disclosure
G
Google Developers Blog
L
LINUX DO - 热门话题
P
Proofpoint News Feed
AI
AI
PCI Perspectives
PCI Perspectives

博客园 - 王传炜

Unity Networking API文档翻译(二):The High Level API Unity Networking API文档翻译(一):Networking概述 Unity3D独立游戏开发日记(二):摆放建筑物 Unity3D独立游戏开发日记(一):动态生成树木 如何申请TexturePacker 我的个人总结 《windowsPhone游戏开发实战》 如何在WP7上用XNA写2D游戏(六) 写在"CastleDefense"上市1周月之际 如何在WP7上用XNA写2D游戏(五) 如何在WP7上用XNA写2D游戏(四) 如何在WP7上用XNA写2D游戏(三) 如何在WP7上用XNA写2D游戏(二) 如何在WP7上用XNA写2D游戏(一) 我的2010年 Silverlight MMORPG WebGame游戏设计(七)-----IsolatedStorage,想说爱你不容易 Silverlight MMORPG WebGame游戏设计(六)-----Server和Client的婚后协议[附上完整15M游戏DEMO] Silverlight MMORPG WebGame游戏设计(四)-----Client:Server!房子啥时候装好?我急嫁人啊! Silverlight MMORPG WebGame游戏设计(三)-----Server和Client的暗号
Silverlight MMORPG WebGame游戏设计(五)-----Client的嫁妆 - 王传炜
王传炜 · 2010-05-03 · via 博客园 - 王传炜
       

新郎Server的房子装修好了,就看这边Client 的嫁妆准备如何了。Client小姐出身Silverlight名门,天生高傲较贵,只让给她服务的仆人使用TCP协议,UDP都不能考虑。

         至于Client家的仆人做事,那是大家风范,全部使用"异步"方式。你看看他们的名字:一个是ConnectAsync,一个是SendAsync,还有一个是ReceiveAsync。另外还有两个打杂,负责关门看院的小厮:Shutdown和Close

         你看看Client小姐所在的城堡,真是气派:

        

         整日闷坐在城堡里的Client小姐听说Server少爷那边房子准备好了,就安奈不住芳心,想催问婚礼什么时候举行。

         她忙叫来ConnectAsync,他主要负责和Server联络,

          ConnectAsync让MessageStream马夫牵来socket宝马,坐上刻着SocketAsyncEventArgs字样的族徽的豪华马车,向Server家奔去。

socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//使用Tcp套接字
          stream = new MessageStream();//使用MessageStream消息辅助类
          SocketAsyncEventArgs args = new SocketAsyncEventArgs();
          args.RemoteEndPoint 
= new DnsEndPoint(SvIP, Sport);//设定和Server的通讯地址和端口
          args.Completed += new EventHandler<SocketAsyncEventArgs>(OnSocketConnectCompleted);//连接完成后做出OnSocketConnectCompleted报告。
          socket.ConnectAsync(args);//开始异步连接

         

        等ConnectAsync从风尘仆仆得从Server家联络回来后,就向马不停蹄得向Client报告:“小姐,我已经禀报了Server少爷那边,就等那边回消息了。”Client一听,展颜一笑:“是么,快让ReceiveAsync准备笔墨,等公子那边的回复。”

         ReceiveAsync一听,赶忙准备1024字节的纸张:

 byte[] response = new byte[1024];
 e.SetBuffer(response, 
0, response.Length);

       那厢ConnectAsync完成跑腿的任务,一边歇息去了:

e.Completed -= new EventHandler<SocketAsyncEventArgs>(OnSocketConnectCompleted);

      e.Completed -= new EventHandler<SocketAsyncEventArgs>(OnSocketConnectCompleted);

e.Completed -= new EventHandler<SocketAsyncEventArgs>(OnSocketConnectCompleted);

     就在Client翘首等待之际,少爷那边的仆人催快马已到,高声通报:“少爷那边来消息了。”,Client一听,忙让MessageStream读取私人密信。上次我们说过,Server少爷和Client小姐比较注意隐私,不用String类型的明文信件,用的是byte字节,这解读密信的差事就交给MessageStream去做了: 

 this.stream.Write(e.Buffer, e.Offset, e.BytesTransferred);
 Message message;
 
while (stream.Read(out message))
 {
    
//记下message内容

 }

      MessageStream不费吹灰之力读完密信,放到Message盒子里双手呈给了Client小姐。

      Client小姐接过Message盒子,看完信件:

          8月11日,此乃良辰吉日,愿于卿结秦晋之好

                                            your lover:Server

      Client心中石头终于落地,忙叫来SendAsync仆人:“快回Server少爷,万事具备,只盼佳期”。

 

      SendAsync也开心领命:“小姐,我这就去办!”,他也让MessageStream领来Socket宝马,套上刻着SocketAsyncEventArgs字样族徽的豪华马车,立马启程,当然身上还是带着 Message盒子,Client小姐回复的信件放在里面。

 SocketAsyncEventArgs myMsg = new SocketAsyncEventArgs();
 myMsg.RemoteEndPoint 
= socket.RemoteEndPoint;
 Message message 
= msg;
 
byte[] buffer = message.ToBytes();
 myMsg.SetBuffer(buffer, 
0, buffer.Length);
 socket.SendAsync(myMsg);

     至此繁琐的婚前准备终于完成,婚礼只待良辰吉日,Server少爷和Client小姐的未来婚后生活是否完美呢?

     请看下一篇文章:

      Silverlight MMORPG WebGame游戏设计(六)-----Server和Client的婚后协议