现有2个问题,socket.send()以后是不是没有立即发送,怎么样让每个包立即发送而不是写到缓冲,还有就是有时候信息会接到多次接收代码是
private  void ReceiveCallback(IAsyncResult ar)
        {
            try
            {
                StateInfo state = (StateInfo)ar.AsyncState;
                //读取数据
                int dataSize = state.socket.EndReceive(ar);
                if (dataSize > 0)
                {
                    state.sb.Remove(0, state.sb.Length);
                    state.sb.Append(Encoding.UTF8.GetString(state.buffer, 0, dataSize));
                    DBManager.ErrorLogInsert("test", "listen", state.sb.ToString());
                    if (state.socket.Available > 0)
                    {
                        state.socket.BeginReceive(state.buffer, 0, state.buffer.Length, SocketFlags.None,
                        new AsyncCallback(ReceiveCallback), state);
                    }
                    else
                    {                        //显示接收数据
                        string content = state.sb.ToString();
                        string[] msgArr = content.Split(new char[] { ';' });
                        if (msgArr.Length != 3)
                        {
                            return;
                        }
                        SendUserMsg sendMSG = new SendUserMsg();
                        sendMSG.UserMobile = msgArr[0];
                        sendMSG.UserMsg = msgArr[1];
                        sendMSG.UserUrl = msgArr[2];
                        if (msgList.LastIndexOf(sendMSG) == -1)
                        {
                            msgList.Add(sendMSG);
                        }
                        //接收完毕
                    }
                }
                state.socket.BeginReceive(state.buffer, 0, state.buffer.Length, SocketFlags.None,
                      new AsyncCallback(ReceiveCallback), state);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
        }求教