我的服务端向客户端发送8个数据,如果你直接运行服务端向客户端发送数据的话,服务端只会发送2个数据,但是如果在发送代码里下断的话,那么它就能全部发送,一个不漏,为什么呢????

解决方案 »

  1.   

    release模式优化代码导致丢东西的么?
      

  2.   


    private void button4_Click(object sender, EventArgs e)
            {
                if (textBox1.Text != "" || textBox2.Text != "" || textBox3.Text != "" || textBox4.Text != "" || textBox5.Text != "" || textBox6.Text != "" || textBox7.Text != "" || textBox8.Text != "")
                {
                    if (_transmit_tb[textBox1.Text.ToString().Trim()] != null)
                    {
                        Socket clientSkt = _transmit_tb[textBox1.Text.ToString().Trim()] as Socket;
                        try
                        {
                           strFLSMC = string.Format("FLSMC--{0}", textBox2.Text.ToString().Trim()).PadRight(50, '^');
                            clientSkt.Send(Encoding.Unicode.GetBytes(strFLSMC));                        strFZKQD = string.Format("FZKQD--{0}", textBox3.Text.ToString().Trim()).PadRight(50, '^');
                            clientSkt.Send(Encoding.Unicode.GetBytes(strFZKQD));                       strFPKOU = string.Format("FPKOU--{0}", textBox4.Text.ToString().Trim()).PadRight(50, '^');
                            clientSkt.Send(Encoding.Unicode.GetBytes(strFPKOU));                        strFPLVE = string.Format("FPLVE--{0}", textBox5.Text.ToString().Trim()).PadRight(50, '^');
                            clientSkt.Send(Encoding.Unicode.GetBytes(strFPLVE));                         strFPKLX = string.Format("FPKLX--{0}", textBox6.Text.ToString().Trim()).PadRight(50, '^');
                            clientSkt.Send(Encoding.Unicode.GetBytes(strFPKLX));                        strFTZFD = string.Format("FTZFD--{0}", textBox7.Text.ToString().Trim()).PadRight(50, '^');
                            clientSkt.Send(Encoding.Unicode.GetBytes(strFTZFD));                         strFMONE = string.Format("FMONE--{0}", textBox8.Text.ToString().Trim()).PadRight(50, '^');
                            clientSkt.Send(Encoding.Unicode.GetBytes(strFMONE));                         strFTIME = string.Format("FTIME--{0}", DateTime.Now).PadRight(50, '^');
                            clientSkt.Send(Encoding.Unicode.GetBytes(strFTIME));                                            }
                        catch (SocketException)
                        {
                            MessageBox.Show("发送出现错误!");
                        }
                    }
                    else
                    {
                        MessageBox.Show("你要发送的客户端不存在");
                    }            }
                else
                {
                    MessageBox.Show("请输入完整信息!");
                }
            }
      

  3.   

    与时间有关
    连续发送SOCKET必须检测端口是否在READY状态,否则发送太快,后面的几个包可能被丢弃只是猜的。
      

  4.   

    OK,就是时间问题,把每次发送的中间加上Thread.Sleep(200);就好了!谢谢大家帮我