无形浪子 2014-03-28 02:05 采纳率: 25%
浏览 3077

java 和C++之间用socket通信

我现在做的是java socket服务端,然后和c++那边通信,我不知道怎么接受c++发的数据,然后判断,经过判断再返回相应的数据,该怎么做?谢谢

  • 写回答

1条回答

  • AA一叶知秋 2014-03-28 03:29
    关注

    1、big-endian与little-endian

    Endian定义:在计算机系统体系结构中用来描述在多字节数中各个字节的存储顺序。

    big-endian也称高位在前、大端在前。是计算机体系结构中一种描述多字节存储顺序的术语,在这种机制中最重要字节(MSB)存放在最低端的地址 上。采用这种机制的处理器有Mortolora PowerPC微处理器系列和绝大多数的 RISC处理器。

    big-endian 最直观的字节序:

    内存地址从左到右与值由低到高的顺序相对应。

    little-endian也称低位在前、小端在前。计算机体系结构中一种描述多字节存储顺序的术语,在这种机 制中最不重要字节(LSB)存放在最低端的地 址上。采用这种机制的处理器有Intel x86系列微处理器和一些网络通信设备。该术语除了描述多字节存储顺序外还常常用来描述一个字节中各个比特的排放次序,这里仅讨论多字节存储循序。

    little-endian是最符合人的思维的字节序,低与低,高与高一一对应:

    地址低位存储值的低位

    地址高位存储值的高位

     下面举一个例子具体说明big-endian与little-endian:
    
      int  nValue = 0x01020304;
    
      上面的整型nValue有4个字节,其中01为最高位的字节,04为最低位的字节。那么在内存(或文件)中,该值的存储循序为:
    
      内存(或文件)地址:0x12000001  0x12000002  0x12000003  0x12000004  
    
      Big-endian         :     01         02           03         04
    
      Little-endian        :     04         03           02         01
    
    
    
      如果用一个byte数组来保存的话,也就是如下:
    
      Big-endian模式下: byte  byValue[] = {0x01, 0x02, 0x03, 0x04};
    
      Little-endian模式下:byte  byValue[] = {0x04, 0x03, 0x02, 0x01};
    

    Big-endian或是little-endian的判断:

    bool IsLittleEndian()

    {

       int   i      = 1;  
    
       char *p      = (char*)&i;  
    

    if ( *p = 1 )

          return true;   // 小端 
    

    else

    return false; // 大端

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog