我写了一个多线程通信程序。 一个服务器监听 客户端连接到服务器 实现通信。可能有多个客户端连接过来
我是这样想的 :
客户端连接到我的服务器。 我使用同一个线程(ThreadReceive ) 处理客户端的数据
private void SocketListen()
{
while (true)
{
try
{
Thread.Sleep(20);
sock = socket.Accept();
if (sock != null)
{
ThreadReceive = new Thread(new ThreadStart(new SocketReceive(sock).SocketReceive_Main));
ThreadReceive.Priority = ThreadPriority.AboveNormal;
ThreadReceive.Start();
}
}
catch (Exception e)
{
Mon_Log.WriteLog(StrLog, "SocketListen()出现如下错误:" + e.Message);
}
}
}
以下代码是具体处理接收到的数据。 我将接收到的数据记录在日志文件中
namespace Server.ServerLogic
{
public class SocketReceive
{
private Socket sock;
//数据缓存,存储接收到的客户端数据
private byte[] dates = new byte[4000];
//数据缓存的长度
private int datesLength;
//日志文件位置
private string StrLog = "逻辑层日志\\SocketReceive信息";
//线程循环锁
private bool StateReceive = true; public SocketReceive(Socket _sock)
{
this.sock = _sock;
} public void SocketReceive_Main()
{
while (StateReceive)
{
Thread.Sleep(20);
try
{
datesLength = sock.Receive(dates);
for (int i = 0; i < 100; i++)
{
Thread.Sleep(20);
Mon_Log.WriteLog(StrLog, Mon_Public.GetString(dates, datesLength));
}
}
catch (Exception e)
{
this.StateReceive = false;
Mon_Log.WriteLog(StrLog, "SocketReceive()出现如下错误:" + e.Message);
}
}
}
}
}我想知道 这样如果有多个客户端连接到我的服务器。 。 我的服务器是使用同一个线程处理吗? 因为我之前是 一个客户端连接过来我就分配一个子线程去专门处理这个客户端的数据 导致CPU使用率一直居高不下。 所以我现在想尽量少使用线程。
我是这样想的 :
客户端连接到我的服务器。 我使用同一个线程(ThreadReceive ) 处理客户端的数据
private void SocketListen()
{
while (true)
{
try
{
Thread.Sleep(20);
sock = socket.Accept();
if (sock != null)
{
ThreadReceive = new Thread(new ThreadStart(new SocketReceive(sock).SocketReceive_Main));
ThreadReceive.Priority = ThreadPriority.AboveNormal;
ThreadReceive.Start();
}
}
catch (Exception e)
{
Mon_Log.WriteLog(StrLog, "SocketListen()出现如下错误:" + e.Message);
}
}
}
以下代码是具体处理接收到的数据。 我将接收到的数据记录在日志文件中
namespace Server.ServerLogic
{
public class SocketReceive
{
private Socket sock;
//数据缓存,存储接收到的客户端数据
private byte[] dates = new byte[4000];
//数据缓存的长度
private int datesLength;
//日志文件位置
private string StrLog = "逻辑层日志\\SocketReceive信息";
//线程循环锁
private bool StateReceive = true; public SocketReceive(Socket _sock)
{
this.sock = _sock;
} public void SocketReceive_Main()
{
while (StateReceive)
{
Thread.Sleep(20);
try
{
datesLength = sock.Receive(dates);
for (int i = 0; i < 100; i++)
{
Thread.Sleep(20);
Mon_Log.WriteLog(StrLog, Mon_Public.GetString(dates, datesLength));
}
}
catch (Exception e)
{
this.StateReceive = false;
Mon_Log.WriteLog(StrLog, "SocketReceive()出现如下错误:" + e.Message);
}
}
}
}
}我想知道 这样如果有多个客户端连接到我的服务器。 。 我的服务器是使用同一个线程处理吗? 因为我之前是 一个客户端连接过来我就分配一个子线程去专门处理这个客户端的数据 导致CPU使用率一直居高不下。 所以我现在想尽量少使用线程。
一个客户端发送 d7 d1 00 00 00 09 00 99
另外一个客户端发送 d7 d1 00 00 00 01 00 01
再先关闭一个客户端 过一会 关闭另外一个 文档中记录的情况
[2011-04-12 14:25:17] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:17] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:17] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:17] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:17] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:17] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:17] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:17] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:17] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:17] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:17] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:17] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:17] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:18] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 9 0 99
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:19] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:20] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:21] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:21] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:21] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:21] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:21] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:21] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:21] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:21] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:21] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:21] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:21] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:21] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:21] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:21] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:21] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:21] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:21] d7 d1 0 0 0 1 0 1
[2011-04-12 14:25:27] SocketReceive()出现如下错误:远程主机强迫关闭了一个现有的连接。
[2011-04-12 14:25:39] SocketReceive()出现如下错误:远程主机强迫关闭了一个现有的连接。
ThreadReceive = new Thread(new ThreadStart(new SocketReceive(sock).SocketReceive_Main));
ThreadReceive.Priority = ThreadPriority.AboveNormal;
ThreadReceive.Start();每个客户端连接过来。 我都是用同一个线程 ThreadReceive 处理 只是每次我都会重新初始化
ThreadReceive = new Thread(new ThreadStart(new SocketReceive(sock).SocketReceive_Main));
这个对象。 这样想来的话 我第一个ThreadReceive 还没有处理完 又重新初始化了 ThreadReceive 这个对象。 这样是不是有两个 ThreadReceive 也就是2个线程在同时运行呢?