一个c/s类软件服务端(一台主机)  接收客户端数据  处理后返回相应的的数据客户端(多台)  连接服务端  并向服务端发送数据  收到服务端返回的数据 进行相应的操作要求首先声明  我是新人  问的问题 或者表达的方式 可能在各位大大看来很 没水准 。呵呵代码最好有注释  方便我理解
用到tcp协议来做数据传输接收
要用到线程技术来为每个连接的客户端创建相应的线程
windowsForms平台的谢谢!

解决方案 »

  1.   

    [Server:]
    TcpListener listener = new TcpListener(10000);//使用10000端口
    listener.Start();//开始侦听
    TcpClient client = listener.AccpTcpClient();//收到连接请求
    [Client:]
    TcpClient client = new TcpClient("对方IP地址",10000);
    client.Connect();//连接服务器
      

  2.   

    http://topic.csdn.net/u/20100810/12/832a3cfa-09af-4c03-99d9-84e872a040f7.html
      

  3.   

    唉!服务器端:
    TcpListener listener = new TcpListener(IPAddress.Any, 5050);  // 在0.0.0.0:5050上侦听
    listener.Start();   // 侦听开始while (True)  // 处理一个客户端连接后再接连处理下一个客户端连接,这里最好做成线程去处理
    {
        TcpClient remoteClient = listener.AcceptTcpClient(); // 接收客户端连接
         NetworkStream streamToClient = remoteClient.GetStream(); // 接收网络流
        byte[] buffer = new byte[BufferSize];   // 设置接收缓冲
        int bytesRead = streamToClient.Read(buffer, 0, BufferSize); // 读以网络流
        string msg = Encoding.Unicode.GetString(buffer, 0, bytesRead); // 把网络流转成文本
        // 处理文本信息
        textBox1.Text += msg + "\r\n"; // 用一个设置了多行的文本框来显示接收的信息
    }
    客户端:
    string msg = "向服务器发送这个文本内容!";   // msg为要发送的信息
    TcpClient client = new TcpClient();
    IPAddress ip = IPAddress.Parse(RemoteHost);  // 这里的RemoteHost指的是运行服务端的机器IP
    IPEndPoint ipe = new IPEndPoint(ip, 505);   
    client.Connect(ipe);  // 连接服务器NetworkStream streamToServer = client.GetStream();
    byte[] buffer = Encoding.Unicode.GetBytes(msg);     // msg为要发送的信息
    streamToServer.Write(buffer, 0, buffer.Length);     // 发往服务器
    streamToServer.Close();  // 关闭网络流
    streamToServer.Dispose();
    client.Close(); 关闭客户端连接
     
      

  4.   

    参考
    http://www.cnblogs.com/kerryking/archive/2008/08/03/1259259.html
      

  5.   

    http://blog.csdn.net/Leslies2/archive/2011/01/14/6140127.aspx
    void Main()
    {
             IPAddress ipAddress = IPAddress.Parse("127.0.0.1");            //默认地址
             TcpListener tcpListener = new TcpListener(ipAddress,500);
             tcpListener.Start();
             while (isListen)                //以一个死循环来实现监听
             {
                    ChatClient chatClient = new ChatClient(tcpListener.AcceptTcpClient());    //调用一个ChatClient对象来实现监听         }
             tcpListener.Stop();
    }public class ChatClient
    {
            private TcpClient _tcpClient;
            private byte[] byteMessage;
            private string _clientEndPoint;        public volatile string message;
            public static Hashtable clients= new Hashtable();          //以此静态变量存处多个客户端地址
            
            public ChatClient(TcpClient tcpClient)
            {
                _tcpClient = tcpClient;
                _clientEndPoint = _tcpClient.Client.RemoteEndPoint.ToString();
                Console.WrtieLine("连接成功,客户端EndPoint为"+_clientEndPoint);            ChatClient.clients.Add(_clientEndPoint, this);       //每创建一个对象,就会将客户端的ChatClient对象存入clients;            byteMessage=new byte[_tcpClient.ReceiveBufferSize];            lock (_tcpClient.GetStream())        //接收信息,使用lock避免数据冲突            {                 _tcpClient.GetStream().BeginRead(byteMessage, 0, _tcpClient.ReceiveBufferSize, new AsyncCallback(Receive), null);                       //就在此处使用异步的IO线程进行数据读取,这样每个一客户端的都处于一个IO线程中处理,使主线程及早得到释放              //这样做就缓解了服务器端压力。
                }
            }        public void Receive(IAsyncResult iAsyncResult)
            {
                try
                {
                    int length;
                   
                    lock (_tcpClient.GetStream())    //信息接收,使用lock避免数据冲突
                    {
                         length= _tcpClient.GetStream().EndRead(iAsyncResult);
                    }
                    if (length < 1)
                    {
                         MessageBox.Show(_tcpClient.Client.RemoteEndPoint + "已经断线");
                         clients.Remove(_tcpClient);
                         return ;
                    }                message=Encoding.Unicode.GetString(byteMessage,0,length);
                    Console.WriteLine(“客户端”+_clientEndPoint+“信息:”+message);
                   //在此处我只是实现一个简单的信息显示
                   //正常情况下,在实现聊天室时,我们可以在此处调用clients变量,为每个客户端发送信息                lock (_tcpClient.GetStream())    //再次监听,使用lock避免数据冲突
                    {
                        _tcpClient.GetStream().BeginRead(byteMessage, 0, _tcpClient.ReceiveBufferSize, new AsyncCallback(Receive), null);                   //再次调用Stream.BeginRead方法,以监听以下次客户的信息
                    }
                }
                catch (Exception ex)
                {
                     clients.Remove(_tcpClient);
                    _tcpClient.GetStream().Close();
                    _tcpClient.Close();
                }
            }
    }