private void btn_Send_Click(object sender, EventArgs e)
        {
            //Thread thr = new Thread(new Program().btn_Send_Click);
            //thr.Start(0);
            
             port = 60000;
             host = "127.0.0.1";
             ip = IPAddress.Parse(host);
             ipe = new IPEndPoint(ip, port);
             c = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            c.Connect(ipe);
            string sendstr = txt_Show1.Text;
            Byte[] bs = Encoding.ASCII.GetBytes(sendstr);
           
            c.Send(bs, bs.Length, 0);
            
            string recvStr = "";
            byte[] recvBytes = new byte[1024];
            int bytes;
            bytes = c.Receive(recvBytes, recvBytes.Length, 0);
            recvStr += Encoding.ASCII.GetString(recvBytes, 0, bytes);
            txt_Show.Text = recvStr;用tcp测试工具测试,设置断点就能正常发送字符过去,没设置断点就不能显示,请大侠帮忙

解决方案 »

  1.   

    能详细点说吗,我加过Thread.Sleep(200);在后面还是不行
      

  2.   

    bytes = c.Receive(recvBytes, recvBytes.Length, 0);这一步会造成系统堵塞,也就是等待服务器发来消息才可以将程序进行下去,要不就卡在这里了。
    解决方法:创建一个新的线程Threah,存放bytes = c.Receive(recvBytes, recvBytes.Length, 0);
      

  3.   

    你的代码貌似没看出来哪有问题,你现在是断点单步执行能receive到数据,可是直接运行就不行么?