在搞遥控功能时候,发现一个奇怪的问题,socket的服务端传指令到客户端,我用了一个status来判断是否传送成功:
点击开始遥控,客户端收到start_manual_mode指令
在这里插入图片描述
页面返回的也是true,说明成功发送
在这里插入图片描述
此时关闭客户端,并且点击前进指令
在这里插入图片描述
发现仍然是true,发送成功,
在这里插入图片描述
再次点击前进指令,发现这次就是false了;
在这里插入图片描述
按道理说,客户端关闭,再点击指令,应该马上就变为false,而不是第二次才变,这里我用debug走了好几次,发现第一次都是正常走流程,第二次被trycatch捕获异常,我自己猜测是客户端关闭,输入输出流还有效,可以正常发送(但是客户端已关闭),第二次则会捕获socket关闭异常,

在客户端发送消息的时候,可以判断socket是否有效:

try {
    socket.sendUrgentData(0);
     } catch (IOException e) {
         //如果抛出了异常,那么就是断开连接了
         return false;

把上面代码加在服务端发送方法里,每次发送消息,就会判断socket是否有效
在这里插入图片描述
这样,只要客户端一关闭,发送消息,就会捕获到异常,不会存在之前延迟一步的情况

在搞遥控功能时候,发现一个奇怪的问题,socket的服务端传指令到客户端,我用了一个status来判断是否传送成功:点击开始遥控,客户端收到start_manual_mode指令页面返回的也是true,说明成功发送此时关闭客户端,并且点击前进指令发现仍然是true,发送成功,再次点击前进指令,发现这次就是false了;按道理说,客户端关闭,再点击指令,应该马上就变为false,而不是第二次才变,这里我用debug走了好几次,发现第一次都是正常走流程,第二次被trycatch捕获异常,我 Docker启动失败,报错Cannot connect to the Docker daemon at unix:///var/run/docker.sock. _Meilinger_: 请问如果没有这个 /etc/sysconfig/selinux 文件,怎么办呢 谷粒学院微信扫码登录过程记录以及bug解决 家家小迷弟: 调用的是本地服务 谷粒学院微信扫码登录过程记录以及bug解决 xiaoxin4399: 为什么换个端口就可以生成二维码了 引入阿里云存储OSS报错:Error creating bean with name ‘ossClient‘ defined in tina0423: 这样子可以了,谢谢!