2 u010219986 u010219986 于 2014.03.28 10:05 提问

java 和C++之间用socket通信

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

1个回答

u013302967
u013302967   2014.03.28 11: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; // 大端

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
JAVA和C之间的socket通信
最近由于项目需要,需要在两个应用之间传递数据。但是一个应用是C语言开发的,另一个应用是JAVA语言开发的,之前只做过JAVA语言之间的通信,因此最开始不知该如何下手。 后来研究了下,发现两种语言是可以进行通信的,通信的基础就是网络传递过程中都是以字节流传递的。 下面是C和JAVA进行socket通信的例子。 C客户端代码: JAVA服务端代码: 运行后
Java与C之间的socket通信
最近正在开发一个基于指纹的音乐检索应用,算法部分已经完成,所以尝试做一个Android App。Android与服务器通信通常采用HTTP通信方式和Socket通信方式。由于对web服务器编程了解较少,而且后台服务器已经采用原始socket实现与c客户端通信,这就要求Android客户端也采用socket实现。所以在开发Android app时采用了原始socket进行编程。 由于算法是用C语言
java与c语言之间的socket通信—c客户端java服务器端
写在前面的声明:程序例子均运行在ubuntu(是一个以桌面应用为主的Linux操作系统)上。当然你也可以把java运行在其它系统上,这里只是为了方便。 上一篇文章已经说明了关于socket的一些知识,but这是远远不够的,我相信只要你感兴趣,学习它并不是什么难事。 好吧,我想你已经迫不及待地想看看 c客户端 java 服务器端通信是什么样子了,我也是; 同样的这只是一个小实例,不过你同样可以
【网络编程6】Java与C语言套接字Socket通信的例子
继上一篇博客《Java与Python套接字Socket通信的例子》,今晚又完成了Java与C语言套接字通信过程,经过一些调试,最后成功了。Github根链接是:https://github.com/1040003585/javanettextbook/tree/master/Java_C    ——惠州学院13网络工程 吴成兵 20160625
C Socket与Java Socket之间的通信
问题描述:拟在服务器上利用c或c++来编写服务器端程序,在android手机上编写客户端程序,实现通过手机客户端来访问服务器上的资源。由于在c中socket的使用方式跟Java中有一些不同,c中的使用方式比较麻烦,java中相对简单。本文中服务器端的环境是linux。若是windows,C Socket的使用方式会稍有不同。 Socket介绍 Socket(套接字)相当于一种特殊的IO。只不过
java与C进行socket通信中的通信异常问题
java和c语言的socket通信中,经常会出现通信异常的问题。比如:java端做client的时候,发送信息到c的server端,但是却又不能收到server发回来的数据。其实原因是在JAVA中的.readline();函数中。请看函数解释: Reads a line of text. A line is considered to be terminated by any one of a l
Java(Android)与C++之间的Socket通信
Java与C++之间的Socket通信,对于小的数据量和控制命令,直接可以封装成json或xml格式,进行传输。但对于文件等大数据量传输,必须要将文件封装成帧,每一帧都设定固定大小的缓冲区,逐帧传输。此时json和xml便不再适用了。 在此过程中要需解决如下问题: 1.    Java和C++数据基本类型不同,不仅所占字节数不同(如long型,java占8bytes,C++一般为4bytes)
socket通信实现
socket通信实现 ---------- 一个趁手的App是离不开网络请求的.而一个APP与服务器之间进行通信分为两种,一种是请求响应机制的,即HTTP请求的.这个大家比较常用.这里不细说了.另外一种就是即时通信.也就是socket.下面我们就来看看socket是何物. TCP和UDP 先抛开两种IOS中常用的通信方式,我们来看一下计算机网络中的数据包的通信.在网络中两个主机之间进行通信有
QT前台与后台程序通过socket通信
<br />本文转自:http://blog.chinaunix.net/u3/103866/showart_2099036.html  <br /> <br />通常情况下在linux上写程序不需要GUI进行展示,但有时做测试还是有个前台界面更加方便,省去了很多繁琐的输入过程,同时也更易于观察输出内容。因此这两天开始回顾了一下QT的东西。做为基础的功能,首先做了个QT和后台进程(c语言实现)交互的模块,在此基础上今后再针对具体需求做些修改便可完成前后台之间的配合。因为QT本身是跨平台的框架,因此以后前端程
C++实现简单Socket通信
C++实现简单Socket通信,最基本的代码。