Skip to content
yuchting edited this page Jun 15, 2017 · 2 revisions

错误/提示信息

所有的手机都必须使用net APN连接,只能使用wap的连接无法使用语盒

前言

由于一些商业原因,黑莓的网络在China不是十分稳定,在语盒开发、测试、使用的阶段,都遇到了很多问题,这些问题不是黑莓机器的本质问题,而是很多的Service Book 与自身使用的网络兼容问题。于是我在语盒主界面中加入错误信息的输出,有助于大家排查问题。

在黑莓语盒状态界面中点击菜单:诊断信息,就会出现如下界面:

  • 有些条目是我长时间测试所得的结论,没有官方文档,如果有谁看出了问题,请不吝赐教。*

客户端诊断信息(Debug Info)

Connection closed

网络关闭。这个比较正常,就是无线通讯运营商切换了手机的IP,或者切断了服务器的联系。这个时候手机可能还有信号。

Time out

  • 可能就是单纯的网络问题,看看机器是否可以上网,如果不行,就等待网络回复正常;如果可以,就是下面一种情况了。
  • 服务器地址不存在,链接超时,看看是不是写错了IP地址。如果说是使用的DDNS(花生壳之类的),可能是域名解析有问题,可以使用ping命令查看是否把域名解析成了正确的IP。同时如果主机、路由器存在防火墙功能,无法从外网访问语盒打开的端口,也是会出现这个提示。如果只是支持WAP的服务,那也有可能出现这个,需要在APN上面填写net相关东西,例如cmnet,uninet等等。

sdcard can't be used

当客户端需要使用SD卡的时候(初始化建立语盒附件目录,存放附件),SD卡没有初始化,比如刚开始开机,USB充电,或者根本没有SD卡,都会导致这种情况。可以无视他,因为,这只是个提示,所有无法使用SD卡的时候,都会使用设备内存。

Peer refused the connection

服务器地址存在,但是端口错了,比如服务器config.ini中的serverPort 字段写的是9000,但是手机端填写的端口确实9001,那么就会受到这条错误消息。或者跟本就没有打开服务器程序,或者客户端链接到其他地址去了。

Tunnel Down

Tunnel failed

Tunnel Time out

Bad tunnel id

以上几种错误全是APN兼容错误(网络错误),我的China Unicom网络十分常见。由于某种原因,在某些时候cmnet是有效的APN,但是有时候确是uniwap,解决这个问题的办法就是如何有效的填写APN,语盒内置了自动切换APN的算法,具体设置看这篇文章
如果长时间收到这类消息,无法连通,尝试重新刷一下另外通用,带Email版本的Service Book,我的8310有时候打死都连不上,也上不了网,于是重新刷了一遍Service Book,就可以连通了,具体什么原因我也不太清楚。

DNS Error

Failed Open UDP socket

  • 如果是语盒官方服务器,请确认客户端的高级设置没有选择“使用自己生成的证书SSL”,目前官方服务器不支持自己生成证书。
  • 首先在高级设置里面填写上一个合适的APN,移动填写 cmnet,联通填写 uninet,电信填写 ctnet,3g网络填写 3gnet (注意,wap无法适用语盒),再次看看是否能连接上。
  • DNS 是将域名解析成IP的一种机制,如果手机报这个错误,那么,需要将主机地址的域名换成IP(通过 http://www.ip138.com 可以查询),再继续尝试。(比如在客户端填写的主机地址是 73168.yuchs.com ,那么在 www.ip138.com 这个地方查询到的IP地址为 74.117.59.18 那么,就把这个查询到的IP地址替换原来的 73168.yuchs.com 域名,填写在客户端上)
    自架服务器 如果使用的是DDNS方式架设的服务器(或者其他以域名为主机地址的方式),在语盒客户端填写主机地址的时候,会写上域名,类似yuchs.gicp.net,而不是IP地址,那么连接的时候就会先发送DNS解析协议,但是这个解析数据包的发出,会出现下面两种情况,但是都会返回这个错误:
  • 服务器超时,域名无效,需要查看自己的DDNS服务,是否已经开通,是否已经解析,方法可以去百度、谷歌问。
  • APN问题,这个和上面的那个Tunnel 问题是一个,都是没有反应,但是如果是域名的话,黑莓系统会报告这个DNS Error,而是不是Tunnel相关的问题。
    判断这两种情况的方法就是用确定的IP地址先试一下,如果返回Tunnel相关错误,那么就是第二种,如果是连接成功,那么就是DDNS服务有问题,从那个地方查起,就会解决问题。

Bad parameter

如果你正常那个链接,就忽视它把,但是如果你链接不了,而且你正好是黑莓OS5.0,那么恭喜你,你很 可能 出现了传说中的“黑莓断网”,语盒现在还无法解决这个问题,正在努力研究之中。

Invalid url parameter

高级设置中的 APN ,链接后缀错误,某些机器会报这个错误。检查(或者直接清空)这两个地方,或者重启一下手机再看看。

permission denied

如果手机上有防火墙,或者其他阻止语盒自由访问网络和存储区的软件,那么就会受到这个提示,我本人没有遇到过,但是据莓友反映可以关闭防火墙,或者信任语盒,就可以解决这个问题。

null java.lang.NullPointerException

偶尔出现这个情况是正常的(具体原因不明)。但是一直连接不上,就有可能是手机系统中没有给语盒授权,或者是有防火墙功能,无法使语盒正确获得网络访问权限,就会一直弹出这个问题。某些其他情况也会出现这个问题,暂时还不明确。

APN is not specified

没有定义APN选项,去到手机里面的 选项->高级选项->TCP 填写上相应的APN即可。(联通 uninet,移动 cmnet,3G 3gnet)

unable to open connection

检查一下手机的IT策略,防火墙,软件的连接权限,看看是否能够让语盒使用手机的网络联机。

Stream Closed

倒数第二的Boss,是2/3G + 5.0 以上系统出现的问题。由于现在无法得之究竟出在哪里,所以很难解决。如果你连接的时候,偶尔出现,那么可能是连接质量的问题,等到你静止下来,可能会好些。但是如果频繁出现,就有可能无法正常使用语盒了。
同时,换一个SB可能会好转,具体原因不明。

General Socket error

最后的Boss出来了。当RIM系统不知道什么原因,就是连接不上socket网络的时候,就会蹦出这个异常。我现在知道的一种情况是真正使用wap协议上网的手机,无法连接socket就会出这个,而一旦出现,无法解决。

null java.io.IOException (黑莓断网了)

绝大多数都是著名的“黑莓断网”,解决办法:拔电池、混刷ROM、降级ROM、上BIS、BES服务。

your device can't support GPS location.

没有GPS的低端机型会输出这个异常,说明没有GPS模块,无法获得定位信息,一般来说,可以忽略。

can t use the dev ROM to store configfile!

一般是没有将USB拔出,导致ROM不可用。也有可能其他导致程序无法访问ROM的原因。

服务器日志输出

在服务器运行的时候,都会有一个log目录动态生成,同时里面就会有若干个带有启动时间为名字的文本log,用记事本打开后就可以看到出错的信息是什么了。

在命令行窗口的状态下也会用眼睛看到,但是复制不出来。

使用YuchSign的莓友,可以在YuchSign面板的查询日志找服务器的日志,判断一下服务器出了什么问题。

Address already in use: JVM_Bind

表示你配置的端口已经有一个程序正在使用了,重新配置一下推送端口;或者找到使用这个端口的程序,停止它。

prepare Email account xxxxx@xxx.com OK

表示一个账户中的一个推送用户已经准备好,可以对其进行推送服务了。

some client<xxx.xxx.xxx.xxx> connecting ,waiting for auth

一个客户端连接上来了,等待客户端的用户密码。

Connection Reset

远端客户端使用GPRS(或其他网络连接)后,中间路由器主动断开的提示。

java.net.SocketTimeoutException: Read timed out

如果在上面的 waiting for auth 信息提示之后出现这个提示,那么很有可能是在服务器没有配置SSL,但是在手机上的“高级设置”里面选中了SSL连接所导致的,关闭手机上的SSL即可(或者配置 SSL 语盒)。

some client connect IP<xxx.xxx.xxx.xxx>

客户端发送了正确的用户密码,已经和客户端建立起了连接。

illeagel client

用户密码填写错误,或者使用了不正确的客户端连接了服务器,语盒每次放出的时候,都做了版本控制,版本不一致的客户端连接,会输出这个错误。

error version client

错误版本的客户端连接上来了,需要更新一下正确的客户端。

Cant find default namespace

Invalid INBOX folder

无法打开push的邮箱地址的收件箱

含有 javax.mail. 的多行信息。例如下面的

12-17 22:51:21 :javax.mail.MessagingException: error fetching POP3 content;
nested exception is:
java.net.SocketTimeoutException: Read timed out
	at com.sun.mail.pop3.POP3Message.getContentStream(POP3Message.java:207)
	at com.sun.mail.pop3.POP3Message.loadHeaders(POP3Message.java:464)
	at com.sun.mail.pop3.POP3Message.getHeader(POP3Message.java:283)
	at javax.mail.internet.MimeMessage.getAddressHeader(MimeMessage.java:689)
	at javax.mail.internet.MimeMessage.getFrom(MimeMessage.java:358)

请在谷歌和百度中搜索 JavaMail + 错误信息,例如上面的内容就可以搜索 "JavaMail error fetching POP3 content" 谷歌可以搜索到这些内容 ,就可以知道想要推送的邮箱服务器有些什么问题了。

java.net.SocketException: Socket closed (sockect ReadInt failed)

服务器和客户端连接的时候收到某种因素的影响,断开了链接,有可能是GPRS基站断开,也有可能是手机主动断开(断网、关闭等等),服务器所产生的输出日志,很正常,因为我们使用的不是专有的GPRS通道。

receive package head < 7 > length< 1 >

在没有收到邮件,客户端有长期的保持连接的时候,这个服务器输出信息,就是所谓的 “心跳包” (不懂的看这里

xxxx@xxx.com send mail<xxxx : simpleHash<xxxxxxxx 邮件标题>,wait confirm...

表示推送了一封邮件,等待客户端发送收到邮件的确认消息。

yuchting@gmail.com Mail Index< xxxx > confirmed

表示服务器收到客户端收到了信件的确认消息。

xxxx@xxx.com Mail <时间戳> send Succ/Failed

服务器收到客户端将要发送的信件,并且发送完毕(后面如果是Succ就是成功,Failed就是失败)

start download attachFile:xxxxxatt

开始下载附件文件,第几封邮件的第几个附件。

send msgMailAttach mailIndex:(全局邮件索引) attachIndex:(附件索引) startIndex:(附件文件块索引) size:512 first:113

服务器收到客户端的请求,向客户端发送的文件块日志,服务器会飞快的发送很多个文件块,GPRS中转可能会变慢,不同步是正常的。

recv msgMailAttach time:(时间戳) beginIndex:(文件块索引)size:(大小)

服务器收到客户端发送的附件的文件块信息。

java.io.IOException: Not in GZIP format

客户端的Serivce Book配置出错,无法使用压缩数据,可能是刚刚安装Service Book没有重启导致的,可以重启机器试试。
还有一种可能是服务器在使用JRE的时候报错,导致错误出现,可以重新换一个服务器(Linux),或者重新下载JRE。

xxx@xxx.xx delete mail Index: xx

服务器收到客户端要删除某个邮件的消息,删除了一封邮件。在客户端的“高级设置”里面可以配置“同步删除邮箱邮件”。

可能出现的邮件乱码问题

需要在服务器的配置中(例如windows),吧默认语言改成中文的。具体步骤是:控制面板-区域和文字选项-区域选项-默认全选中国。linux用户请自行探索。

Clone this wiki locally