客户端在登陆成功后,开始向服务器发送数据,里面有这么两次发送。是连续的。但是经常丢失,第二次发送服务器收都收不到。sleep一下后会好很一点。但是偶尔还是会丢。怎么解决各位帮帮。此贴问题一样。帮助解决200分相送。
http://topic.csdn.net/u/20090304/09/95cdc6af-a70e-43bd-97c7-b9a6974354ee.html如果需要发送全部原码。留下EMAIL。连续发送数据的代码                   //准备数据
                    //登陆成功消息
                    Data msgToSend = new Data();
                    msgToSend.cmdCommand = Command.Login;
                    msgToSend.strName = clsglo.strname;
                    msgToSend.strId = clsglo.strID;
                    msgToSend.strPSW = clsglo.strPws;
                    msgToSend.strMessage = null;
                    byte[] b = msgToSend.ToByte();
                    SendText(b);
                    //请求更新在线用户列表
                    
                    msgToSend.cmdCommand = Command.List;
                    msgToSend.strName = clsglo.strname;
                    msgToSend.strId = clsglo.strID;
                    msgToSend.strPSW = clsglo.strPws;
                    msgToSend.strMessage = null;
                    b = msgToSend.ToByte();
                    SendText(b);        
//发送数据的代码
private void SendText(byte[] byteMessage)
        {
            lock (clsglo.tcpcl.Client)
            {
                clsglo.tcpcl.Client.BeginSend(byteMessage, 0, byteMessage.Length, SocketFlags.None, new AsyncCallback(OnSend), clsglo.tcpcl.Client);
                Thread.Sleep(500);
            }
            用下面三行的代码丢失更多
            //BinaryWriter writer = new BinaryWriter(clsglo.tcpcl.GetStream()); ;
            //writer.Write(byteMessage);
            //writer.Flush();
        }
//关闭
        public void OnSend(IAsyncResult ar)
        {
            //allDone.Reset();//让那些等待这个事件的线程阻塞。
            lock (clsglo.tcpcl.Client)
            {
                clsglo.clientSocket.EndSend(ar);
                
            }
        }