各位新年好!
当进行TCP监听时,有客户连接,怎么接受完客户的信息,立即发送信息给客户呢? 
TcpClient MyTcpClient=MyTcpListener.AcceptTcpClient(); 
NetworkStream MyStream=MyTcpClient.GetStream();
byte[] MyBytes = new byte[1024];
int MyBytesRead=MyStream.Read(MyBytes,0,MyBytes.Length);
string MyMessage=System.Text.Encoding.Default.GetString(MyBytes,0,MyBytesRead);
cmd=MyMessage;
this.richTextBox1.Text+=cmd;

cmd="HELLO WORLD!";
StreamWriter MyStreamS=new StreamWriter(MyStream);
    MyStreamS.Write(cmd);
MyStreamS.Flush();
MyStreamS.Close();
MyTcpClient.Close(); 

解决方案 »

  1.   

    直接用GetStream()得到的那个 MyStream.Write(...);
      

  2.   

    可是这样也提示出错啊
    TcpClient MyTcpClient=MyTcpListener.AcceptTcpClient(); 
    NetworkStream MyStream=MyTcpClient.GetStream();
    byte[] MyBytes = new byte[1024];
    int MyBytesRead=MyStream.Read(MyBytes,0,MyBytes.Length);
    string MyMessage=System.Text.Encoding.Default.GetString(MyBytes,0,MyBytesRead);
    cmd=MyMessage;
    this.richTextBox1.Text+=cmd.Substring(4,11);
    //解释执行
    cmd="HELLO WORLD!"; 
        MyStream.Write(cmd);
    MyStream.Flush();
    MyStream.Close();
    MyTcpClient.Close();
      

  3.   

    又用了如下方法也没有解决
    TcpClient MyTcpClient=MyTcpListener.AcceptTcpClient(); 
    NetworkStream MyStream=MyTcpClient.GetStream();
    byte[] MyBytes = new byte[1024];
    int MyBytesRead=MyStream.Read(MyBytes,0,MyBytes.Length);
    string MyMessage=System.Text.Encoding.Default.GetString(MyBytes,0,MyBytesRead);
    cmd=MyMessage;
    this.richTextBox1.Text+=cmd.Substring(4,11);
    cmd="HELLO WORLD!"; 
    byte[] byteTime = Encoding.ASCII.GetBytes(cmd); 
        MyStream.Write(byteTime,0,byteTime.Length);
    //MyStream.Flush();
    MyStream.Close();
    MyTcpClient.Close();
      

  4.   

    TcpListener MyTcpListener = new TcpListener(9999);
                MyTcpListener.Start();
                TcpClient MyTcpClient = MyTcpListener.AcceptTcpClient();
                NetworkStream MyStream = MyTcpClient.GetStream();
                byte[] MyBytes = new byte[1024];
                int MyBytesRead = MyStream.Read(MyBytes, 0, MyBytes.Length);
                string MyMessage = System.Text.Encoding.Default.GetString(MyBytes, 0, MyBytesRead);
                string cmd = MyMessage;
                //this.richTextBox1.Text += cmd.Substring(4, 11);
                cmd = "HELLO WORLD!";
                byte[] byteTime = Encoding.ASCII.GetBytes(cmd);
                MyStream.Write(byteTime, 0, byteTime.Length);
                //MyStream.Flush();
                MyStream.Close();
                MyTcpClient.Close();
                Console.Read();
      

  5.   

    异步回调方式:
    mainSocket.BeginAccept(new AsyncCallback(OnClientConnect), null);
    楼主可参考相关资料!
      

  6.   

    我的想法是在服务端得到客户端的消息后在服务端显示
    = 这个一点问题也没有,异步接收即可然后立即从服务端发送消息给客户端
    = 问题来了:发信息没问题,但是你如何知道客户端的状态?换句话说,你如何知道客户端已经准备好接收了?应该使用两个分线程,一个用来监听并且接受客户端的连接请求,并且把这些请求加入一个列表;另一个线程不断运行Socket.Select,将列表中的Socket进行筛选,判断客户端的状态,为等待接收或者等待发送。然后,使用异步接收或者发送,来处理客户端的请求。
      

  7.   

    sddddddddddddddddddddddddddddddddddddddddddd