我正在编写一个应用程序服务器,它将维护超过 2,000 个长期持久客户端 TCP 连接。我想知道异步接受连接并从中读取数据的最有效方法是什么。
我本质上想将所有套接字代码包装在一个具有这样公共足迹的类中:
public partial class ApplicationClient
{
private Socket socket;
public ApplicationClient(Socket socket)
{
this.socket = socket;
}
public event ApplicationMessageEventHander MessageReceived;
private void OnMessageReceived(string message)
{
ApplicationMessageEventHander messageReceived = this.MessageReceived;
if (messageReceived != null)
{
var eventArgs = new ApplicationMessageEventArgs(message);
messageReceived(this, eventArgs);
}
}
}
使用 .NET 的套接字来适应这种架构的最佳方式是什么?
编辑:还值得一提的是,客户端传递的每条消息都将以换行符结尾。在收到整个消息之前,我不想触发该事件。