本帖最后由 qcbf1 于 2011-04-27 13:22:17 编辑

解决方案 »

  1.   


        class Program
        {
            private static int port = 9985;
            private static TcpListener tcplist;
            private static IPAddress ip = IPAddress.Parse("192.168.2.144");
            private static Socket socket;
            static void Main(string[] args)
            {
                
                tcplist = new TcpListener(ip,port);
                tcplist.Start();
                Console.WriteLine("{0}开始监听{1}端口!", ip, port);
                while(true)
                {
                    socket = tcplist.AcceptSocket();
                
                    Thread user = new Thread(start);
                    user.Start();
                }
                
                Console.ReadKey(true);
            }        static private void start()
            {
                
                Console.WriteLine("{0}-连接成功", socket.RemoteEndPoint);            byte[] data = new byte[1024];
                string back = string.Format("欢迎你{0}进入{1}!", socket.RemoteEndPoint, ip);
                byte[] backD = Encoding.UTF8.GetBytes(back);
                socket.Send(backD, backD.Length, SocketFlags.None);            Int32 bytes = socket.Receive(data, data.Length, SocketFlags.None);
                string stream = Encoding.ASCII.GetString(data, 0, bytes);
                Console.WriteLine("{0}:{1}", socket.RemoteEndPoint, stream);
                try
                {
                    socket.Send(data);
                }
                catch(Exception e)
                {
                    Console.WriteLine("客户端已断开连接!");
                    Console.ReadKey(true);
                }
            }
        }
    这样可以一些,但是客户端发送的消息都服务端都发给最后一个连接的客户端的,还有就是还是那个每个客户端只能发送一条消息.....
      

  2.   

     //while(true)
                //{
    去掉注释不就行了