|
|
用了HP的UDP服务器 不定时会闪退
<火山程序 类型 = "通常" 版本 = 1 />
方法 HP_UDP服务器_数据进入 <接收事件 类型 = 整数 注释 = " 当服务器接收到客户端数据时,将触发本事件."
注释 = " 请注意,HP服务器/Pull服务器/Pack服务器收到数据后,都将会通过本事件通知用户," 注释 = "但不同的服务器将会导致本事件参数不同,请您按照以下方式进行数据接收."
注释 = "" 注释 = " 1.HP服务器: HP服务器为PUSH通信模型,接收到数据后,将会立即通过本事件通知用"
注释 = "户,并且设置本事件的\"当前接收数据长度\"和\"当前所接收数据\"参数." 注释 = ""
注释 = " 2.PULL服务器: Pull服务器接收到数据后,将会立即通过本事件通知用户,但是只会"
注释 = "设置本事件的\"当前接收数据长度\"参数,\"当前所接收数据\"将为空对象,您可以进行数"
注释 = "据长度累计,当所接收到数据长度为完整的包长度后,使用方法\"抓取数据\"或\"窥探数据\"" 注释 = "从内存中将数据提取,直接组成一个完整的数据包." 注释 = ""
注释 = " 3.Pack服务器: Pack服务器接收到数据后,并不会立即通过本事件通知用户,只有当数" 注释 = "据接收完整之后,才会触发本事件,省去您自行拆包组包的步骤."
返回值注释 = "本事件返回值无具体意义,请返回默认值0." 折叠2>
参数 来源对象 <类型 = HP_UDP服务器 注释 = "提供事件产生的具体来源对象">
参数 标记值 <类型 = 整数 注释 = "用户调用\"挂接事件\"命令时所提供的\"标记值\"参数值,非此方式挂接事件则本参数值固定为0.">
参数 当前数据来源连接ID <类型 = 整数 注释 = "当前连接ID">
参数 当前接收数据长度 <类型 = 整数 注释 = "当前数据长度">
参数 当前所接收数据 <类型 = "字节 []" 注释 = "当前所接收数据." 注释 = "请注意: 如果当前服务器为PULL服务器,本参数将为空对象,请不要使用本参数.">
{
变量 包大小 <类型 = 文本型>
变量 MD5值 <类型 = 文本型>
变量 转换 <类型 = 整数>
如果 (来源对象 == UDP服务器)
{
开始俘获异常 ()
{
如果真 (当前所接收数据 != 空对象)
{
如果 (文本包含 (字节数组到文本 (当前所接收数据), "完成OK") == 真)
{
如果 (全局变量.数据源 != 空对象)
{
// 包大小 = 取文本中间2_ (字节数组到文本 (当前所接收数据), "[", "]")
MD5值 = 取文本中间2_ (字节数组到文本 (当前所接收数据), "<", ">")
// 转换 = 文本到整数 (包大小)
// 如果真 (转换 == 取数组成员数 (全局变量.数据源))
如果 (MD5值 == 摘要_取数据MD5 (全局变量.数据源, 假))
{
图片框1.置图片数据 (全局变量.数据源)
// 图像加载类.初始化 (空对象).加载4 (整数数组1).载入至 (图片框1)
}
全局变量.数据源 = 空对象
}
}
否则
{
如果 (全局变量.数据源 == 空对象)
{
全局变量.数据源 = 当前所接收数据
}
否则
{
全局变量.数据源 = 字节数组操作.合并 (全局变量.数据源, 当前所接收数据)
}
}
}
}
俘获所有异常 ()
{
提示信息框 (取被俘获异常对象 ().取异常文本 ())
// 调试输出(取被俘获异常对象 ().取异常文本 ())
}
}
返回 (0)
}
有时候几小时 有时候一小时 是不定时自动闪退 异常也抓不了 应用奔溃处理也使用了 也是抓不了是直接闪退到桌面
|
|