SocketAsyncEventArgs

来源:互联网 发布:九宫图算法15 编辑:程序博客网 时间:2024/04/29 08:01

独立开发的游戏服务器端敲完了(告别BUG!!!!) 写个博客(总结)出来

介绍(大概都知道大笑) SocketAsyncEventArgs是.NET Framework 3.5出的

SocketAsyncEventArgs常用的成员

Buffer

BytesTransferred

SocketError

UserToken

BytesTransferred

SetBuffer

Completed

///////////只列出了主要方法~

Accept监听

bool b= socket.AcceptAsync(e);  if (!b){      //注意这里要上锁     lock(e)    { ProcessAccept(e);       }}
Receive监听
<pre name="code" class="csharp">bool b= userToken.connect.ReceiveAsync(userToken.ReceiveEventArgs); if (!b){     lock (userToken)  //这里也要加锁     {          ProcessReceive(userToken.ReceiveEventArgs);     }         } 
<pre name="code" class="csharp">//判断网络消息接收是否成功if (userToken.ReceiveEventArgs.BytesTransferred > 0 && userToken.ReceiveEventArgs.SocketError == SocketError.Success){   //...处理消息和再次开启消息监听}


IO_Completed
<pre name="code" class="csharp">lock (userToken)  {      if (e.LastOperation == SocketAsyncOperation.Receive)     {        ProcessReceive(e);     }      else if (e.LastOperation == SocketAsyncOperation.Send)     {        ProcessSend(e);       } }
Send
<pre name="code" class="csharp">sendSAEA.SetBuffer(buff, 0, buff.Length);bool result = connect.SendAsync(sendSAEA);if (!result){   sendProcess(sendSAEA);//这里只是个回调}//之前在插入数据的时候我也上锁了 否则会数据混乱 尴尬...
<img alt="得意" src="http://static.blog.csdn.net/xheditor/xheditor_emot/default/proud.gif" />











0 0
原创粉丝点击