今天下了个第三方的 东西 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;
}
这个应该怎么设置? 有没有用过的? 我上代码 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;
}
{
string recievedStr = Encoding.Default.GetString(bytes); ShowMSG(string.Format("收到连接ID:{0} 的信息,内容:{1},长度:{2}", connId, recievedStr, bytes.Length)); return HandleResult.Ok;
}收到信息他还是会先判断前4位 完事再处理信息 如果我自己写一个不带前4位包头的数据 他就直接报错强制断开客户端连接了
也找不到哪里可改 就只有调用的方法
server.MaxPackSize = 0x1000是如何转换为4字节的包头的?