java只做socket通信,用C++处理协议解析,解析后的东西再通过java来显示。
这样做可以吗?该如何实现啊?因为socket通信的数据量较大,都用java来实现解析是不是会影响效率?

解决方案 »

  1.   

    你可以在serverSocket.accept()之后开个线程池来做。协议的解析也只是字符串的内容的提取,数据的处理上Java可以根据编码方式选择合适的IO,没必要用C++来做。
      

  2.   

    Java效率不会差,尤其不会比从Java到C++再到Java这样频繁的转换差。我不知道你的socket数据有多大,我做的是市场行情接收软件。这么说吧,在每秒60000个消息,平均每个消息1K的大小,就是每秒60Mb的数据量(当然不是国内交易所)的压力测试下,我的系统处理每个消息所用的时间是3~4个微秒。其中包括了从字节流解码,处理,再用另一种编码格式编码的时间。公司内最好的纯C程序,也差不多是这个水平。所以我看不到任何需要用C++的理由不要对Java有“慢”的偏见。
      

  3.   

    据说android的NDK就是解决效率的问题的,如果客户端采取存java的方式不知道可行否啊