假期收尾了,学芽子们都军训了。一群张一山和周冬雨在校内晃晃悠悠,说起来春风十里也就军训比较有意思。对于我这种一年追一部剧的人,显然是有点对不住。在我假期任务即将圆满之际,我开始放慢脚步寻找生活的美妙时刻,因为我还是渴望休息的,开学又要有开学的事情做,午休一会都要耍上几把《绝地求生大逃杀》!因为我还没有吃到鸡!·搞计算机的不玩游戏你说你搞不搞笑。咦,其实我也有几个月没玩了哈哈。
这个胜者吃鸡源于电影《决胜21点》中男主角在赌场常说的一句。“大吉大利,今晚吃鸡!”,而他还有一句话“我的人生观,昨天是历史,明天是个迷”我也很喜欢。
今天我发现我的学籍异动系统表设计的不太好,为了图方便把通知书表和申请书表给捏到一起了。出了一些麻烦,在软件架构方面我还是着急了,没有好好的全方面的了解这个系统就下手实现,犯了轻敌的错误。
可能最近我比较渴望休息,在技术方面比较浮躁,追求速度了些。反思。
总结一下前阶段做的传感器接收程序吧。java的,socket和线程结合,http加密发送请求,流的读写和16进制字节码以及log4j等。
我的程序角色是服务端server,传感器是客户端(每个传感器有各自端口,发送同一个端口的server)。程序启动传感器会根据ip端口连进来,我会定期像它发送16进制指令,把多参数数据读回来取平均值,检查数据是否异常,最后加密发给php网站。
我们都知道socket的accept是阻塞的方法。如果我去控制server的开关,会有一个大麻烦,就是端口占用问题。java.net.BindException: Address already in use: JVM_Bind,一定要关闭好socketServer和socket。
1 public static void socketServerInit(Main main){ 2 Configuration configuration = null; 3 try { 4 LOG.info(">>>> 服务器已启动 <<<<"); 5 ss = new ServerSocket(); 6 ss.setReuseAddress(true); 7 ss.bind(new InetSocketAddress(Main.IpField.getText(),Integer.valueOf(Main.portField.getText()))); 8 LOG.info(">>>> 配置成功,等待连接"); 9 while (true) // 服务器端一直监听这个端口,等待客户端的连接 10 { 11 configuration=readConfig(configuration,main); 12 sk = ss.accept(); // 当有客户端连接时,产生阻塞 13 LOG.info(">>>> 获取一个连接"); 14 saveConfigToLocal(configuration); 15 printBhOnView(main,sk,configuration); 16 LOG.info(">>>>>> 数据接收程序启动 <<<<<<"); 17 SocketServerRun socketServerRun = new SocketServerRun(); 18 socketServerRun.setConfiguration(configuration); 19 socketServerRun.setServer(ss); 20 socketServerRun.setSocket(sk); 21 Thread thread = new Thread(socketServerRun); 22 thread.start(); 23 // new SocketThread(sk, configuration).start();// 新建一个socketThread处理这个客户端的socket连接 24 } 25 } catch (IOException ex) { 26 ex.printStackTrace(); 27 } finally { 28 // try { 29 // if (sk != null) { 30 // sk.close(); 31 // } 32 // if (ss != null) { 33 // ss.close(); 34 // } 35 // } catch (Exception ex) { 36 // ex.printStackTrace(); 37 // LOG.error(ex.getMessage()); 38 // } 39 } 40 }
但还有麻烦,我当我连接了一个传感器后开启线程去读数据了,sk = ss.accept()这个代码会再次被执行到,去等下一个传感器。这时候关闭socket的话会报错java.net.SocketException: socket closed。总之很头疼。
在我的系统可以把它catch掉,然后不管他。但是这么做是不推荐的,等我想到解决办法再更新吧,今天先写到这接下来用到的技术我会挨篇写出。以供参考。
附一张图下章继续讲。
我没有每天玩喔,下了班之后还是要看王小波的书的。程序虽然很迷人,但我还有我的生活,它是我的一部分。
今天的情诗,就来一首徐志摩的《偶然》吧。来和我大声念(带感情),预备,起。
我是天空的一片云,
偶尔投影在你的心波——
你不必惊讶,
更无需欢喜——
在转瞬间消灭了踪影。
你我相逢在黑夜的海上,
你有你的,我有我的,方向;
你记得也好,
最好你忘掉,
在这交会时互放的光亮!