如果使用一个do/while循环,并将listener.AcceptTcpClient()方法和TcpClient.GetStream().Read()方法都放在这个循环以内,那么服务端将可以处理多个客户端的一条请求。

1、服务器端
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Net;
using System.Net.Sockets;
using System.IO;

namespace Service
{
    class Program
    {
        static void Main(string[] args)
        {

            const int BufferSize = 8192;
            //ConsoleKey key;
            Console.WriteLine("service is running.....");
            IPAddress ip = new IPAddress(new byte[] { 127, 0, 0, 1 });
            TcpListener listener = new TcpListener(ip, 8500);
            listener.Start();
            Console.WriteLine("start listening.......");
            do
            {
                
                // 获取一个连接,中断方法
                TcpClient remoteClient = listener.AcceptTcpClient();   // 打印连接到的客户端信息
                Console.WriteLine("Client Connected!{0} <--{1}",
                remoteClient.Client.LocalEndPoint, remoteClient.Client.RemoteEndPoint);
                // 获得流,并写入buffer中
                NetworkStream streamToClient = remoteClient.GetStream();
                byte[] buffer = new byte[BufferSize];
                int bytesRead = streamToClient.Read(buffer, 0, BufferSize);
                Console.WriteLine("Reading data, {0} bytes ...", bytesRead);
                // 获得请求的字符串
                string msg = Encoding.Unicode.GetString(buffer, 0, bytesRead);
                Console.WriteLine("Received: {0}", msg);
            } while (true);
        }
    }
}


2、客户端
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Net;
using System.Net.Sockets;

namespace Client
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Client Running ...");
            TcpClient client;
            try
            {
                client = new TcpClient();
                client.Connect("localhost", 8500);     // 与服务器连接
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message); return;
            }
            // 打印连接到的服务端信息
            Console.WriteLine("Server Connected!{0} --> {1}", 
                client.Client.LocalEndPoint, client.Client.RemoteEndPoint);
           // string msg = "\"Welcome To TraceFact.Net\"";
            string msg = "我是";
            NetworkStream streamToServer = client.GetStream();
            byte[] buffer = Encoding.Unicode.GetBytes(msg);    // 获得缓存      
            streamToServer.Write(buffer, 0, buffer.Length);    // 发往服务器      
            Console.WriteLine("Sent: {0}", msg);
        }
    }
}