jiusetian / EasySocket

一个轻量级的Android端Socket框架,可快速实现客户端和服务端之间的TCP长连接通讯,兼容于各种消息协议,框架的特色之一是可以实现Socket的消息回调功能
396 stars 86 forks source link

日志未完全关闭,数据通讯过程中报错崩溃 #24

Closed phoebewow closed 3 years ago

phoebewow commented 3 years ago

I/System.out: Socket发送数据byte[]--> 这个日志信息中关闭日志后还存在

1.8.7版本升级到2.0.3后中通讯的时候会出现这个报错

│ args[1] = java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference
│   at com.easysocket.utils.Utils.isNetConnected(Utils.java:124)
│   at com.easysocket.connection.connect.SuperConnection.isConnectViable(SuperConnection.java:279)
│   at com.easysocket.connection.reconnect.DefaultReConnection$1.run(DefaultReConnection.java:60)
│   at android.os.Handler.handleCallback(Handler.java:938)
│   at android.os.Handler.dispatchMessage(Handler.java:99)
│   at android.os.Looper.loop(Looper.java:223)
│   at android.os.HandlerThread.run(HandlerThread.java:67)

还有其实消息回复直接用bytearray即可,最终需要解析成什么数据格式,让用户自行解析下就可以了,都是基于bytearray来解析的 override fun onSocketResponse(socketAddress: SocketAddress?, originReadData: OriginReadData?) {} override fun onSocketResponse(socketAddress: SocketAddress?, readData: String?) {} override fun onSocketResponse(socketAddress: SocketAddress?, readData: ByteArray?) {} 现在是这三个都会同时回消息,没必要啊

phoebewow commented 3 years ago

我把1.8.7后面的版本都试了,从1.8.8的就开始有这个错误了

phoebewow commented 3 years ago

看到了,主要就是我是同时连接一个服务器的两个端口,没有使用EasySocket.getInstance().createConnection来连接,所以这个context一直就是空的

phoebewow commented 3 years ago

果然,两个连接中的一个换成EasySocket.getInstance().createConnection来连接,就没这个报错了。。。 不过这个日志的话,是之前版本已经关闭了。没显示的,后面的版本又出来了

jiusetian commented 3 years ago

果然,两个连接中的一个换成EasySocket.getInstance().createConnection来连接,就没这个报错了。。。 不过这个日志的话,是之前版本已经关闭了。没显示的,后面的版本又出来了

你用的是这个方法buildSpecifyConnection是吧,我很少考虑这个方法,我看一下怎么解决问题最好

phoebewow commented 3 years ago

是的,之前两个端口我都是用buildSpecifyConnection连接的,所以报错了,其中一个换成createConnection就没问题了

jiusetian commented 3 years ago

是的,之前两个端口我都是用buildSpecifyConnection连接的,所以报错了,其中一个换成createConnection就没问题了

我重新适配了多个Socket连接的情景

phoebewow commented 3 years ago

非常棒,谢谢