呵呵,你问的是我刚才解决的问题:)
不过分数有些少:(
using System;
using System.Net.Sockets;
using System.Text;
using System.Collections;
using System.Threading;
namespace 多线程监听
{
/// <summary>
/// 负责监听。
/// </summary>
class TcpServer
{

int iPort;
/// <summary>
/// 包含了已经连接的客户
/// </summary>
public static ArrayList ALTcs=new ArrayList ();
/// <summary>
/// 构造服务器
/// </summary>
/// <param name="iPort">监听的端口</param>
public TcpServer(int iListenPort)
{
iPort=iListenPort;
}
/// <summary>
/// 开始监听
/// </summary>
public void StartListen()
{
TcpListener Tl = new TcpListener(iPort);
Socket  Tc;
while (true)
{
try
{

Tl.Start();
Tc=Tl.AcceptSocket();
ALTcs.Add (Tc);
HostHolder t1=new HostHolder (Tc);
System.Console.WriteLine("A User Conned...");
byte[] bHelloMsg=Encoding.ASCII.GetBytes ("Cysoft TCP Class Test");
Tc.Send (bHelloMsg);
System.Console.WriteLine (Tc.Handle.ToString ());
}
catch(SocketException e)
{
System.Console.WriteLine (e.Message);
}
}
}

}

/// <summary>
/// 处理客户的数据
/// </summary>
class HostHolder
{
public Socket Tc ;
private Thread t;
public HostHolder(Socket Sc)
{
Tc=Sc;
Thread t=new Thread (new ThreadStart (GetClData));
t.Start ();
}
private void GetClData()
{
byte[] bData=new byte[2];
while(true)
{
if(Tc.Available >0)
{
Tc.Receive (bData);
System.Console.WriteLine ( Encoding.Default.GetString( bData) );
}
}
}
}
}/////你关心的部分
using System;
using System.Net.Sockets;
using System.Text;
using System.Collections;
using System.Threading;namespace 多线程监听
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
static Thread tcp;
[STAThread]
static void Main(string[] args)
{
//监听部分
//把监听部分放在线程中
Thread tcp = new Thread(new ThreadStart(startserver));
tcp.Start ();
System.Console.WriteLine ("Cysoft(R) BlueeFlame Server Console[Version:0.1.1]");
System.Console.WriteLine ("RO server dep test");
System.Console.WriteLine ("Code name:BlueeFlame");
Thread cmd = new Thread (new ThreadStart (CommandShell));
cmd.Start ();
}
/// <summary>
/// 处理服务器端的命令
/// </summary>
static void CommandShell()
{
string[] sCommandData;
while(true)
{
System.Console.Write (">");//提示符
string sCommand=System.Console.ReadLine ();
sCommandData=sCommand.Split (' ');//拆分命令
switch (sCommandData[0])
{
case "show":
System.Console.WriteLine ("Server Name:BlueeFlame");
break;
case "stop":
System.Console.WriteLine ("Server stop");
Class1.tcp.Abort();//存在隐患
break;
case "start":
System.Console.WriteLine ("Server start");
//Class1.tcp.Start();//方法错误
break;
case "time":
System.Console.WriteLine (DateTime.Now.ToString() );
break;
case "list":
CmdListUser();
break;
case "count":
System.Console.WriteLine ("Users:" +TcpServer.ALTcs.Count.ToString () );
break;
case "":
break;
case "send":
try
{
CmdSendMessage(sCommandData[2],Convert.ToInt32 (sCommandData[1]));
}
catch//处理格式不正确
{
System.Console.WriteLine ("usage: send key message");
System.Console.WriteLine ("eg:send 0 Hey");
System.Console.WriteLine ("you may get key by using list");
}
break;
default :
System.Console.WriteLine ("-server: "  + sCommand + " :command not found");
break;
} }
}
/// <summary>
/// 向客户发送消息
/// </summary>
/// <param name="sMessage">消息内容</param>
/// <param name="iKey">制订的客户id</param>
static void CmdSendMessage(string sMessage,int iKey)
{

try
{
Socket Tc=(Socket)TcpServer.ALTcs[iKey];
byte[] bMessage=Encoding.ASCII.GetBytes("\n"+sMessage);
System.Console.WriteLine("Send message to :"+Tc.Handle );
System.Console.WriteLine(sMessage);
try
{
Tc.Send (bMessage);

}
catch(Exception e)
{
System.Console.WriteLine(e.Message.ToString ());
TcpServer.ALTcs.Remove(Tc);
} }
catch
{
System.Console.WriteLine("没有这个客户");

}


}
/// <summary>
/// 列出用户
/// </summary>
static void CmdListUser()
{
int iUsers=TcpServer.ALTcs.Count;
System.Console.WriteLine("Net Status");
System.Console.WriteLine("Users:"+ iUsers);
System.Console.WriteLine("Remote List:");
System.Console.WriteLine("IP ADD:Port");
foreach (Socket Tc in TcpServer.ALTcs )
{
System.Console.WriteLine (Tc.RemoteEndPoint.ToString()+" Conn ID:" +Tc.Handle.ToString ()+" Key:"+TcpServer.ALTcs.IndexOf(Tc));
} } private static void startserver()
{
TcpServer Ts=new TcpServer(7878);
Ts.StartListen();
}
}
/// <summary>
/// 创建服务器的类,使用多线程处理新的连接
/// </summary>


}