我创建了一个异步服务器,可以从任意数量的客户端读取消息。我的服务器代码与此示例密切相关:http: //msdn.microsoft.com/en-us/library/fx6588te.aspx
客户端连接后,我想定期向该客户端发送数据,可能每秒 2 或 3 次。我想不出用异步发送()实现这一目标的好方法。我假设某种计时机制需要添加到我的AcceptCallback()
方法中,因为这是与客户端的连接发生的地方。
在我的服务器的先前版本中,我使用阻塞套接字,只是send()
在无限while()
循环中循环我的方法并调用sleep()
以降低时间。
这就是我的想法:
public void AcceptCallback(IAsyncResult ar)
{
allDone.Set(); // Signal the main thread to continue.
// Get the socket that handles the client request.
Socket listener = (Socket)ar.AsyncState;
Socket handler = listener.EndAccept(ar);
IPEndPoint remotePoint = (IPEndPoint)handler.RemoteEndPoint;
IPAddress remoteAddress = remotePoint.Address;
Console.WriteLine("Connected to {0}!", remoteAddress.ToString());
// Create the state object.
StateObject state = new StateObject();
state.workSocket = handler;
//Start periodically sending here??
handler.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,
new AsyncCallback(ReadCallback), state);
}