模拟器常见问题

模拟器能同时启动两个么?

可以同时启动多个模拟器,但是不能在同一个目录下运行。因为由于MO端口监听方面的冲突,因此需要修改配置文件。

缺省端口在配置文件哪个部分?

缺省MT端口配置在这个部分:

<socket timeout="5">
  <local port="****"/>
</socket>

配置MO端口以及相关参数在这个部分:

<socket timeout="5">
  <remote host="****" port="****"/>
</socket> 

这个意味着MO端口指向本机的8801端口。修改配置后,需要重新启动模拟器才可以生效。

如何允许建立更多的连接?

连接个数的配置在这个部分:

<session type="*****.********" async="true" count="1">

将属性count修改为大于1的数值即可。

如何控制链接中数据包的处理速度?

处理速度的配置在这个部分:

<session type="*****.********" async="true" count="1">

增加一个属性flux即可。例如:flux=”100”。单位是“个/秒”。

<session type="*****.********" async="true" flux="100" count="1">

如何控制活动测试的时间间隔?

活动测试的时间间隔的配置在这个部分:

<enquire initiative="30" passive="-1"/>

属性initiative表示了主动活动测试的时间间隔。属性passive则表示了被动等待活动测试的时间间隔。单位均为秒。

缺省是每30秒进行一次活动测试,从服务器端发送给客户端。如果想取消活动测试,则将initiative设置为-1。注意:设置为0,则表示连续进行活动。

如何发送特定的上行和状态报告?

对于模拟器端,可以正确执行的指令只有“模拟上行”和“状态报告”。

(1) 点击“模拟上行”,按照下面的方式进行填写:

填写完毕后,点击“发送”。系统则开始按照所填写的数据模拟上行操作。

(2) 点击“状态报告”,按照下面的方式进行填写:

填写完毕后,点击“发送”。系统则开始按照所填写的数据模拟状态报告。

注意:如果不清楚状态报告的结构或者数据,请使用之前介绍的方法触发正确的状态报告。

各种不同模拟器的jar包可以互换使用么?

理论上说同一版本内的都是可以相互互换兼容的。考虑到系统在不断调整和修改,因此最好使用安排好的jar包。

为什么模拟器总是登陆不上,提示验证无效?

模拟器里面常见的配置参数有四个:enterprise_code、service_code、account和password。

enterprise_code表示企业编号或者代码;serivce_code表示接入所使用的特服号(或者长号码);account是登陆所使用的帐号;password是登陆所使用密码。

其中最容易弄混的是企业代码和登陆所使用的帐号。很多实际网关缺省认为企业编号或者代码就是登陆所使用的账户,其实更多情况下登陆帐户是独立设置的。模拟器缺省情况下并未设置成一致的数值,因此如果有登陆不上的问题,可以将登陆帐号修改成企业代码再测试登陆过程。

为什么华为的标准CMPP2.0 API总是链接不上模拟器,提示验证错误?

经过反编译,发现华为smproxy.jar中的时间戳是一个写死的错误数值(“0008080808”,0x7b4da8),不符合CMPP/SMGP规范(月份数值为0,是无效数值)。模拟器会对这个错误数值进行自动修正。这样会导致MD5完全不一致。所以容易出现的一个现象就是能接入正式的华为网关(华为网关不验证timestamp的正确性),但是无法接入标准CMPP/SMGP模拟器。

稍微对smproxy.jar中的CMPPConnectMessage.class和SMGPLoginMessage.class做了16进制编辑和修正后,这个API就可以连接模拟器了。修正后的API可以点击这里下载。不过这个API还存在其他一些问题,最稳妥的办法是使用SimpleTeam提供的CMPPAPI/SMGPAPI。

为什么亚信网关模拟器总是登陆不上,提示无效的版本号?

亚信网关将版本号用于识别连接的功能类型。当版本号为0时表明是transmitter连接;当版本号为1时表明是receiver链接。真实的亚信网关会对其他非标准值都认为是transmitter连接;而亚信网关模拟器则认为其他版本号均无效。

在过渡期完成后,真实的亚信网关已经放弃了原有的区分方式,而是采取分端口的方式来区分transmitter和receiver链接。此时应该选择收发分离模式的配置文件进行模拟。

配置文件中session的type为transmitter、receiver和transceiver是什么意思?

transmitter是指session仅用于发送;receiver是指session仅用于接收;transceiver是指session同时用于收发。

例如:按照CMPP标准协议,session是同时可以用于收发的,因此session的type一般配置为transceiver。按照SMPP标准协议,session的发送和接收功能是分开的,因此需要配置一个session的类型是transmitter,另外一个session的类型是receiver。

很多情况下网关可以同时支持以上三种模式,因此可以根据实际需要配置。但是一般也遵守一个规则,即要么选择收发一体模式配置,或者选择收发分离的模式配置。不要随意混合搭配。

初次链接模拟器的时候返回链接满是什么意思?

上面已经谈到了session配置的三种模式。如果客户端初次连接时,要求绑定没有配置的session类型,那么模拟器就会返回链接满的错误。

例如:按照SMPP标准协议,模拟器配置了一个transmitter和一个receiver类型的session。如果客户端要求绑定transceiver类型时,系统就会提示链接满的错误。

使用彩信模拟器测试的时候,接收到的媒体文件会存放在什么地方?

模拟器的确会保存这些媒体文件。一般会存放在模拟器工作目录的webpages\objects目录下。多媒体文件一般可以直接点击观看;对于文本文件会涉及编码问题,有可能需要转码后才可以正确浏览。

使用MM7Api连续发送彩信的时候,会出现一个成功一个失败间隔的情况,这个是什么原因?

移动方面所提供的MM7Api可以支持短链接和长链接模式。这个模式配置在ConnConfig.xml中有一个KeepAlive项目。如果这个设置为on则表示使用长链接模式;如果这个设置为off则表示使用短链接模式。

MM7Simulator目前的缺省配置是短链接模式。如果使用MM7Api的长链接模式和模拟器进行配合测试的时候,就会出现一个成功,一个失败相互间隔的情况。原因是因为MM7Api的连接池会选择已经关闭的链接来发送数据,因此肯定会导致IO错误。

修改和调整的方法有两个,均可以有效解决测试中的问题:(1)将MM7Api设置为短链接模式;(2)将模拟器设置为长链接模式。

为了将MM7Api设置为短链接模式,仅需要将ConnConfig.xml中的KeepAlive项目设置为off。再运行相关例程就会完全正常。

为了将MM7Simulator设置为长链接模式,需要在session(type=”server.transmitter”)的属性里面增加一个keep=”true”的属性。重新启动模拟器后,再运行相关例程就会完全正常。

彩信的发送速率主要取决哪些因素?

除了取决程序的设计因素以外,另外一个主要因素就是带宽。

假设一个彩信包平均是70KBytes,一秒一条。那么至少需要大约560Kbits的带宽。1Mbits的带宽也就能处理2条/秒。也就是说一个2Mbits的光纤,大致相当于250KBytes,大约只能承受每秒3~4条的流量。模拟器本地测试彩信的时候,速度可以到达60条左右,但是如果实际线路如此的话,估计带宽至少要达到30M的水平才可以。这么高的互联网带宽要求,成本就非常高了。