C# 中,如果对性能要求不高,并发不多,可以用线程模式做TCP服务(一台机器最多并发2000个左右):
其中用start()来启动服务器,Running是个全局的bool变量。
StartServer是Accept Socket循环;没收到一个Socket连接,就开启一个独立线程去处理数据。
StartClient是客户端Socket的数据处理过程了。业务代码写在这里就好。
public void Start()
{
Running = true;
new Thread(new ThreadStart(StartServer)).Start();
}
public void Stop()
{
Server.Stop();
Running = false;
}
private void StartServer()
{
int port = 6688;
String tmp = System.Configuration.ConfigurationManager.AppSettings["port"] ?? "6688";
Int32.TryParse(tmp, out port);
IPAddress addr = IPAddress.Parse("0.0.0.0");
Server = new System.Net.Sockets.TcpListener(addr, port);
Server.Start();
while (Running)
{
TcpClient client = Server.AcceptTcpClient();
new Thread(StartClient).Start(client);
}
Server.Stop();
}
private void StartClient(object param)
{
TcpClient client = (TcpClient)param;
}