这是服务端的代码:
            IPAddress ipAd = IPAddress.Parse("127.0.0.1");
            TcpListener myList = new TcpListener(ipAd, 8001);
            myList.Start();
            Console.WriteLine("start the service at port 8001.......");
            Console.WriteLine("local node:" + myList.LocalEndpoint);
            Console.WriteLine("wait for connection.......");
            Socket s = myList.AcceptSocket();
            Console.WriteLine("connection from" + s.RemoteEndPoint);
            byte[] b = new byte[100];
            int k = s.Receive(b);
            Console.WriteLine("have accpeted");
            for (int i = 0; i < k; i++)
            {
                Console.Write(Convert.ToChar(b[i]));
            }
            ASCIIEncoding asen = new ASCIIEncoding();
            s.Send(asen.GetBytes("the string was recieved by server."));
            Console.WriteLine("\n");
            s.Close();
            myList.Stop();
里面的这几句:byte[] b = new byte[100];
            int k = s.Receive(b);
            Console.WriteLine("have accpeted");
            for (int i = 0; i < k; i++)
            {
                Console.Write(Convert.ToChar(b[i]));
            }
不是很明白;还有这是客户端的代码:
try
            {
                TcpClient tcpclnt = new TcpClient();
                Console.WriteLine("connect.....");
                tcpclnt.Connect("127.0.0.1", 8001);
                Console.WriteLine("have connected");
                Console.WriteLine("enter a string");
                string str = Console.ReadLine();
                Stream stm = tcpclnt.GetStream();
                ASCIIEncoding asen = new ASCIIEncoding();
                byte[] ba = asen.GetBytes(str);
                Console.WriteLine("transfering....");
                stm.Write(ba, 0, ba.Length);
                byte[] bb = new byte[100];
                int k = stm.Read(bb, 0, 100);
                for (int i = 0; i < k; i++)
                {
                    Console.Write(Convert.ToChar(bb[i]));
                }
                tcpclnt.Close();
            }
            catch (Exception e)
            {
                Console.WriteLine("error" + e.StackTrace);
            }
里面的:
  byte[] ba = asen.GetBytes(str);
                Console.WriteLine("transfering....");
                stm.Write(ba, 0, ba.Length);
                byte[] bb = new byte[100];
                int k = stm.Read(bb, 0, 100);
                for (int i = 0; i < k; i++)
                {
                    Console.Write(Convert.ToChar(bb[i]));
                }
这几句也不是很明白

解决方案 »

  1.   

    byte[] b = new byte[100];
      int k = s.Receive(b);//把接受到的字节数据存到b中
      Console.WriteLine("have accpeted");
      for (int i = 0; i < k; i++)
      {
      Console.Write(Convert.ToChar(b[i]));//循环在控制台,输出b中接收到的数据。先转成char再输出。
      }
      

  2.   

    byte[] ba = asen.GetBytes(str);//把str转成byte数组ba
      Console.WriteLine("transfering....");
      stm.Write(ba, 0, ba.Length);//把ba中的数据写入stm
      byte[] bb = new byte[100];
      int k = stm.Read(bb, 0, 100);//从0开始,在stm读100个byte到bb中。
      for (int i = 0; i < k; i++)
      {
      Console.Write(Convert.ToChar(bb[i]));//输出bb的数据
      }