仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1445|回复: 20
打印 上一主题 下一主题

[学习教程] JAVA编程:java与c/c++举行socket通讯的一些成绩(...

[复制链接]
逍遥一派 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:46:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
java比较简单,没有C++的烦琐,但学习时最好有C++为基础.与JSP和SQL起应用,功能强大.c++|成绩近几天看到csdn上问c/c++和java通讯的成绩对照多,出格是c独有的数据布局(如struct)。

专程依据网友的一个成绩举个例子,但愿对初学者有所匡助。

原成绩见:http://community.csdn.net/Expert/topic/3886/3886989.xml?temp=.3527033

这类成绩一般是为了使用原有Server大概Server不克不及做修正(一般是c/c++)形成。

好比Server端只吸收一个布局Employee,界说以下:

structUserInfo{
charUserName[20];
intUserId;
};
structEmployee{
UserInfouser;
floatsalary;
};
固然也能够界说为

structEmployee{
charname[20];
intid;
floatsalary;
};


javaclient测试源码(为申明成绩,假定struct字节对齐,sizeof(Employee)=28)

importjava.net.*;

/**
*与C言语通讯(java做Client,c/c++做Server,传送一个布局)
*@authorkingfish
*@version1.0
*/
classEmployee{
privatebyte[]buf=newbyte[28];//为申明成绩,定逝世巨细,事务中能够天真处置

/**
*将int转为低字节在前,高字节在后的byte数组
*/
privatestaticbyte[]toLH(intn){
byte[]b=newbyte[4];
b[0]=(byte)(n&0xff);
b[1]=(byte)(n>>8&0xff);
b[2]=(byte)(n>>16&0xff);
b[3]=(byte)(n>>24&0xff);
returnb;
}

/**
*将float转为低字节在前,高字节在后的byte数组
*/
privatestaticbyte[]toLH(floatf){
returntoLH(Float.floatToRawIntBits(f));
}

/**
*机关并转换
*/
publicEmployee(Stringname,intid,floatsalary){
byte[]temp=name.getBytes();
System.arraycopy(temp,0,buf,0,temp.length);

temp=toLH(id);
System.arraycopy(temp,0,buf,20,temp.length);

temp=toLH(salary);
System.arraycopy(temp,0,buf,24,temp.length);
}

/**
*前往要发送的数组
*/
publicbyte[]getBuf(){
returnbuf;
}

/**
*发送测试
*/
publicstaticvoidmain(String[]args){
try{
Socketsock=newSocket("127.0.0.1",8888);
sock.getOutputStream().write(newEmployee("kingfish",123456789,8888.99f).
getBuf());
sock.close();
}
catch(Exceptione){
e.printStackTrace();
}

}//end

---------------------------------------------------------------------------

固然,也能够使用writeInt,writeFloat办法发送,但字节按次必要改成低在前。
这个成绩稍后在会商。


若有任何成绩,请斧正!


他们对jsp,servlet,javabean进行封装就是为了展示他们的某个思想,与java的开发并没有必然的关系,也不见得在所以情况下,别人使用起来会简单。
愤怒的大鸟 该用户已被删除
沙发
发表于 2015-1-21 13:57:50 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
简单生活 该用户已被删除
板凳
发表于 2015-1-22 10:28:31 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
冷月葬花魂 该用户已被删除
地板
发表于 2015-1-28 09:05:33 | 只看该作者
吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧
只想知道 该用户已被删除
5#
发表于 2015-2-1 17:25:45 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
精灵巫婆 该用户已被删除
6#
发表于 2015-2-2 22:05:26 来自手机 | 只看该作者
是一种突破用户端机器环境和CPU
谁可相欹 该用户已被删除
7#
发表于 2015-2-7 04:11:39 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
小女巫 该用户已被删除
8#
发表于 2015-2-9 03:27:09 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
蒙在股里 该用户已被删除
9#
发表于 2015-2-26 20:16:24 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
爱飞 该用户已被删除
10#
发表于 2015-3-4 05:01:18 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
飘飘悠悠 该用户已被删除
11#
发表于 2015-3-5 20:35:23 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
若天明 该用户已被删除
12#
发表于 2015-3-12 14:48:44 | 只看该作者
是一种突破用户端机器环境和CPU
13#
发表于 2015-3-16 00:52:16 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
海妖 该用户已被删除
14#
发表于 2015-3-19 12:55:17 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
透明 该用户已被删除
15#
发表于 2015-3-23 10:04:17 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
分手快乐 该用户已被删除
16#
发表于 2015-3-24 05:58:53 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
乐观 该用户已被删除
17#
发表于 2015-3-25 11:13:07 | 只看该作者
Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。
变相怪杰 该用户已被删除
18#
发表于 2015-3-27 03:09:27 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
若相依 该用户已被删除
19#
发表于 2015-4-21 21:12:03 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
活着的死人 该用户已被删除
20#
发表于 2015-4-24 17:48:36 | 只看该作者
你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 16:37

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表