当前位置:文档之家› c 多线程socket开发 个服务器对多个客户端

c 多线程socket开发 个服务器对多个客户端

下面直接讲多线程服务器端开发。

(直接给代码和解释吧)
首先定义一个新类,用于传递(连接socket )和接受发送数据。

class ClientThread
{
Encoding encoding = ("GB2312"); oString();
IPAddress ip = (strIPAddr); //把ip地址字符串转换为IPAddress
IPEndPoint ipep = new IPEndPoint(ip, 9001); //用指定的端口和ip
newsock = new Socket, , ;
(ipep);//绑定
(10);//监听
while (true)
{
try
{
//当有可用的客户端连接尝试时执行,并返回一个新的socket
Socket client = ();
//创建消息服务线程对象,并把连接socket赋于ClientThread
ClientThread newclient = new ClientThread(client);
//把ClientThread 类的ClientService方法委托给线程
Thread newthread = new Thread(new ThreadStart);
// 启动消息服务线程
();
}
catch
{
//连接中断或者连接失败
}
}
}
这样就完成了多线程socket的开发。

一个服务器能对多个客户端:当有客户端要求连接的时候创建新的线程去处理对应的客户端。

但是这有一个缺点是,当有N个连接客户端的时候,就有N个线程,会对程序性能以及计算机性能影响很大。

下面用线程池的方法对线程进行线程管理(限制最大的线程数,把空闲的线程重新使用,以提高性能)。

使用命名空间下的threadpool类。

Thread newthread = new Thread(new ThreadStart);
();
将以上程序代码换成threadpool的静态方法QueueUserWorkItem(这个方法默认最多能有25个线程,你可以根据你自己的需要进行设置,这里不详说了):
(new WaitCallback);
这个方法要求被调用的函数至少有一个参数object。

比如:public void ClientServer(object 0)。

相关主题