今天下了个第三方的 东西 hp-socket   里面的C#实例中 服务器端 和客户端 都设置统一的包头才能正确识别  如果不需要设置包头  注释上写着当包头标识为0时不校验包头  我改成0之后依然不对 server.PackHeaderFlag = 0;    这些写不对  调试了下 发现 包前面还是有4位 怎么把这包头去掉?
这个应该怎么设置?  有没有用过的?  我上代码 private void TCP_Pack_Server_Load(object sender, EventArgs e)
        {
            appState = AppState.Stoped;
            SetControlState();            //绑定事件
            //绑定监听地址前触发
            server.OnPrepareListen += new TcpServerEvent.OnPrepareListenEventHandler(server_OnPrepareListen);
            //客户端连接请求被接受后触发
            server.OnAccept += new TcpServerEvent.OnAcceptEventHandler(server_OnAccept);
            //发送消息后触发
            server.OnSend += new TcpServerEvent.OnSendEventHandler(server_OnSend);
            //收到消息后触发
            server.OnReceive += new TcpServerEvent.OnReceiveEventHandler(server_OnReceive);
            //连接关闭后触发(服务端的连接通常是多个,只要某一个连接关闭了都会触发)
            server.OnClose += new TcpServerEvent.OnCloseEventHandler(server_OnClose);
            //组件停止后触发
            server.OnShutdown += new TcpServerEvent.OnShutdownEventHandler(server_OnShutdown);            //PACK模型包头格式
            //XXXXXXXXXXXXX YYYYYYYYYYYYYYYYYYY
            //前13位为包头标识,用于数据包校验,取值范围为0-8191(ox1FFF),当包头标识为0时不校验包头
            //后19位为长度,记录包体长度。有效数据包最大长度不能超过524287(ox7FFFF)字节,默认长度限制为262144(ox40000)字节
            //设置包头标识,客户端与服务端的包头标识一致才能通信
            server.PackHeaderFlag = 0xff;
            //设置包体长度
            server.MaxPackSize = 0x1000;
        }

解决方案 »

  1.   

    我手动处理也可以  现在问题是 他自带的前面那4位 不知道在哪里删  private HandleResult server_OnReceive(IntPtr connId, byte[] bytes)
            {
                string recievedStr = Encoding.Default.GetString(bytes);            ShowMSG(string.Format("收到连接ID:{0} 的信息,内容:{1},长度:{2}", connId, recievedStr, bytes.Length));            return HandleResult.Ok;
            }收到信息他还是会先判断前4位  完事再处理信息  如果我自己写一个不带前4位包头的数据  他就直接报错强制断开客户端连接了 
    也找不到哪里可改  就只有调用的方法   
      

  2.   

    那你用push进行收发 别用pull
      

  3.   

    设置的    server.PackHeaderFlag = 0xff;
          server.MaxPackSize = 0x1000是如何转换为4字节的包头的?
      

  4.   

    将 private HPSocketCS.TcpPackServer server = new HPSocketCS.TcpPackServer(); 改为   private HPSocketCS.TcpServer server = new HPSocketCS.TcpServer();