电子缴税
工作三年以来,好像很少完整的渡过黄金周了。国庆前四天完全都在忙电子缴税的通信。Java实现Socket的通信其实也很简单,只是要和对方的Server通信比较麻烦,而且通信协议中加入了CRC效验,加上Server部分是C++实现,而且只有执行文件,无法看到接收的信息,根本无法跟踪调试,程序进度无法得以实质性进展。
国庆过后,和负责Server部分的同事联调了一下,基本清楚到问题出现的地方。一个是Java处理通信部分以回车结尾,而C则以'\0'结尾,另一个是通信应该是以byte[]进行通信。
俗话说,“打蛇打七寸”,弄清问题的梗节后,对症下药就容易多了。第一个问题比较容易解决,解决第二个问题时,碰到了比较麻烦的问题,如何把int、long类型的数据转换为byte[]呢?这时,同事王炯给了我很好的办法,用int、long 类型移位(后来发现java.math.BigDecimal java.math.BigInteger 其实提供了解决方法)。连夜修改好程序,第二天再进行联调,终于通过。
总结:
1. 只熟悉单一的程序语言是不够的。要多了解其它语言,遇到多语言衔接时才不会毫无头绪!
2. Java内库还不够熟悉。
3. 不懂网络协议。
下阶段目标:学习VC,TCP/IP。深入了解JDK。
PS:
王炯真的是一个天才的程序员,喜欢钻研,现在主流的语言他基本都小有研究,为人也非常友善,大方,甚至有点搞笑。
国庆过后,和负责Server部分的同事联调了一下,基本清楚到问题出现的地方。一个是Java处理通信部分以回车结尾,而C则以'\0'结尾,另一个是通信应该是以byte[]进行通信。
俗话说,“打蛇打七寸”,弄清问题的梗节后,对症下药就容易多了。第一个问题比较容易解决,解决第二个问题时,碰到了比较麻烦的问题,如何把int、long类型的数据转换为byte[]呢?这时,同事王炯给了我很好的办法,用int、long 类型移位(后来发现java.math.BigDecimal java.math.BigInteger 其实提供了解决方法)。连夜修改好程序,第二天再进行联调,终于通过。
总结:
1. 只熟悉单一的程序语言是不够的。要多了解其它语言,遇到多语言衔接时才不会毫无头绪!
2. Java内库还不够熟悉。
3. 不懂网络协议。
下阶段目标:学习VC,TCP/IP。深入了解JDK。
PS:
王炯真的是一个天才的程序员,喜欢钻研,现在主流的语言他基本都小有研究,为人也非常友善,大方,甚至有点搞笑。