首页  编辑  

线程模式TCP Server简单的写法

Tags: /C#/Web网络编成/   Date Created:
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;
	// 对 client 做处理 ……,读写等
}