diff --git a/.vs/HaoYueNet/DesignTimeBuild/.dtbcache.v2 b/.vs/HaoYueNet/DesignTimeBuild/.dtbcache.v2
index 612bc9c..1a45331 100644
Binary files a/.vs/HaoYueNet/DesignTimeBuild/.dtbcache.v2 and b/.vs/HaoYueNet/DesignTimeBuild/.dtbcache.v2 differ
diff --git a/.vs/HaoYueNet/v17/.futdcache.v1 b/.vs/HaoYueNet/v17/.futdcache.v1
index 76c651b..cf5964a 100644
Binary files a/.vs/HaoYueNet/v17/.futdcache.v1 and b/.vs/HaoYueNet/v17/.futdcache.v1 differ
diff --git a/NetLib/HaoYueNet.ServerNetwork/NetWork/SocketManager.cs b/NetLib/HaoYueNet.ServerNetwork/NetWork/SocketManager.cs
index a74626e..164c525 100644
--- a/NetLib/HaoYueNet.ServerNetwork/NetWork/SocketManager.cs
+++ b/NetLib/HaoYueNet.ServerNetwork/NetWork/SocketManager.cs
@@ -37,7 +37,7 @@ namespace HaoYueNet.ServerNetwork
/// 心跳包计数器
///
private System.Timers.Timer _heartTimer;
-
+
public int m_maxConnectNum; //最大连接数
public int m_revBufferSize; //最大接收字节数
public BufferManager m_bufferManager;
@@ -170,7 +170,7 @@ namespace HaoYueNet.ServerNetwork
listenSocket.Listen(m_maxConnectNum);
// post accepts on the listening socket
StartAccept(null);
-
+
_heartTimer = new System.Timers.Timer();
_heartTimer.Interval = TimerInterval;
_heartTimer.Elapsed += CheckUpdatetimer_Elapsed;
@@ -297,7 +297,7 @@ namespace HaoYueNet.ServerNetwork
if (e.SocketError == SocketError.OperationAborted) return;
StartAccept(e);
}
-
+
void IO_Completed(object sender, SocketAsyncEventArgs e)
{
// determine which type of operation just completed and call the associated handler
@@ -318,19 +318,18 @@ namespace HaoYueNet.ServerNetwork
void IO_Completed2(object sender, SocketAsyncEventArgs e)
{
// determine which type of operation just completed and call the associated handler
-
- switch (e.LastOperation)
- {
- case SocketAsyncOperation.Receive:
- ProcessReceive(e);
- break;
- case SocketAsyncOperation.Send:
- ProcessSend2(e);
- break;
- default:
- throw new ArgumentException("The last operation completed on the socket was not a receive or send");
- }
-
+ Console.WriteLine("就他妈从来没进过");
+ //switch (e.LastOperation)
+ //{
+ // case SocketAsyncOperation.Receive:
+ // ProcessReceive(e);
+ // break;
+ // case SocketAsyncOperation.Send:
+ // ProcessSend2(e);
+ // break;
+ // default:
+ // throw new ArgumentException("The last operation completed on the socket was not a receive or send");
+ //}
}
// This method is invoked when an asynchronous receive operation completes.
@@ -383,9 +382,9 @@ namespace HaoYueNet.ServerNetwork
//将数据包交给后台处理,这里你也可以新开个线程来处理.加快速度.
if (ReceiveClientData != null)
ReceiveClientData(token, rev);
-
+
DataCallBackReady(token, rev);
-
+
//这里API处理完后,并没有返回结果,当然结果是要返回的,却不是在这里, 这里的代码只管接收.
//若要返回结果,可在API处理中调用此类对象的SendMessage方法,统一打包发送.不要被微软的示例给迷惑了.
} while (token.Buffer.Count > 4);
@@ -462,7 +461,7 @@ namespace HaoYueNet.ServerNetwork
OnClose(token);
lock (m_clients) { m_clients.Remove(token); }
-
+
//补充处理
lock (_DictSocketAsyncUserToken) { _DictSocketAsyncUserToken.Remove(token.Socket); }
@@ -546,11 +545,11 @@ namespace HaoYueNet.ServerNetwork
sendrun--;
Console.WriteLine("!!!!!!!!!!!!!!!!!!!!!!!!!!");
}
- catch(Exception ex)
+ catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
-
+
}
public void SendMessage(AsyncUserToken token, byte[] message)
@@ -570,6 +569,9 @@ namespace HaoYueNet.ServerNetwork
myreadEventArgs.AcceptSocket = token.Socket;
myreadEventArgs.SetBuffer(message, 0, message.Length); //将数据放置进去.
token.Socket.SendAsync(myreadEventArgs);
+
+ //得了,先回去吧
+ m_Sendpool.Push(myreadEventArgs);
return;
}
else
@@ -639,7 +641,7 @@ namespace HaoYueNet.ServerNetwork
}
#region
-
+
///
/// 用于调用者回调的虚函数
///
@@ -710,12 +712,12 @@ namespace HaoYueNet.ServerNetwork
OnCloseReady(token);
}
}
-
+
public AsyncUserToken GetAsyncUserTokenForSocket(Socket sk)
{
return _DictSocketAsyncUserToken.ContainsKey(sk) ? _DictSocketAsyncUserToken[sk] : null;
}
-
+
///
/// 对外暴露的发送消息
///
@@ -731,7 +733,7 @@ namespace HaoYueNet.ServerNetwork
byte[] _finaldata = Serizlize(_s2cdata);
SendWithIndex(token, _finaldata);
}
-
+
///
/// 发送心跳包
///
@@ -757,7 +759,7 @@ namespace HaoYueNet.ServerNetwork
OnCloseReady(token);
}
}
-
+
private void DataCallBackReady(AsyncUserToken sk, byte[] data)
{