各位,我现在在做一个客户端程序,用于接收从服务器发送过来的数据并进行解析保存等操作。。但经常会出现接收不到的问题,先把主要代码贴下来求指导class ClientCommunication
{  public static List<byte> tempAllDataBytes = new List<byte>();
   //一轮接收完后共接收到的所有待处理数据
    private Socket muClientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
   private byte[] muReceiveBytes = new byte[2048];
   private IPAddress muIPAddress;
   private IPEndPoint muIPEndPoint;
   public static bool isConnected = false;   public event EventHandler GetData;/// 接收到数据事件   public ClientCommunication(string ipAddress, int iport)
        {
            try
            {
                muIPAddress = IPAddress.Parse(ipAddress);
                muIPEndPoint = new IPEndPoint(muIPAddress, iport);
            }
            catch (Exception e)
            {略 }
        }
    public void RaiseGetData()
        {
            if (GetData != null)
            {
                GetData(this, new EventArgs());
            }
        }
    public bool ConnectServer()
        {
            try
            {
                muClientSocket.Connect(muIPEndPoint);
                return true;
            }
            catch
            {
                return false;
            }
        }
   public void ShutDownConnect()
        {
            if (muClientSocket.Connected)
            {
                muClientSocket.Close();
            }
        }
  public bool SendMessage(byte[] osMessage)
        {省略                    }
  public void ReceiveBegin()/// 开始接收消息
        {
            muClientSocket.BeginReceive(muReceiveBytes, 0, muReceiveBytes.Length, SocketFlags.None, new AsyncCallback(ReceiveMessageCallBack), muClientSocket);
        }
        private void ReceiveMessageCallBack(IAsyncResult ar)
        {
            Socket tvSocket = ar.AsyncState as Socket;
            string receiveString = null;//存放"CloseSocket"字符串
            if (tvSocket != null)
            {
                try
                {
                    int ReceiveCount = tvSocket.EndReceive(ar);
                    byte[] buffer = new byte[ReceiveCount]; 
                    Array.Copy(muReceiveBytes, 0, buffer, 0, ReceiveCount);
                    receiveString = Encoding.UTF8.GetString(muReceiveBytes,0,ReceiveCount);
                    if (receiveString == "CloseSocket")
                    {
                        Array.Clear(buffer, 0, buffer.Length);
                        Array.Clear(muReceiveBytes, 0, muReceiveBytes.Length);
                    }
                    else
                    {
                        tempAllDataBytes.AddRange(buffer);                        Array.Clear(buffer, 0, buffer.Length);
                        Array.Clear(muReceiveBytes, 0, muReceiveBytes.Length);
                        RaiseGetData();
                        tempAllDataBytes.Clear();
                    }
                    
                    
                    tvSocket.BeginReceive(muReceiveBytes, 0, muReceiveBytes.Length, SocketFlags.None, new AsyncCallback(ReceiveMessageCallBack), tvSocket);
                }
                catch
                {
                    //无法接收消息很大可能是网络中断.
                    //mucSocket.Remove(tcSocket);
                    tvSocket.Close();
                    return;
                }
            }
        }
   
以上是接收到数据,然后通过
muClientCommunication.GetData += new EventHandler(muClientCommunication_GetData);转到muClientCommunication_GetData()进行相应的数据解析,保存和显示。。但是收到一些数据之后,该客户端收不到数据了,我检查过服务器,服务器确实成功的发送了。。