我正在按照MSDN教程创建异步Socket服务器(这里)。我需要服务器能够持续监听来自客户端的消息,经过查看这里和这里的答案,我最终得到了以下代码:
我的问题是,由于对
public static void ReadCallback(IAsyncResult ar)
{
String content = String.Empty;
StateObject state = (StateObject)ar.AsyncState;
Socket handler = state.workSocket;
int bytesRead = handler.EndReceive(ar);
if (bytesRead > 0)
{
state.sb.Append(Encoding.ASCII.GetString(
state.buffer, 0, bytesRead));
content = state.sb.ToString();
if (content.IndexOf("<EOF>") > -1)
{
// Message received, do something
// ...
}
else
{
// Not all data received. Get more
// ...
}
}
// Continue waiting
handler.BeginReceive(state.buffer, 0, SocketState.BufferSize, 0,
new AsyncCallback(ReadCallback), state);
}
我的问题是,由于对
ReadCallback()
进行了递归调用,这种方法会无限增加堆栈吗?