JAVA编程:java与c/c++举行socket通讯的一些成绩(...
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;
intUserId;
};
structEmployee{
UserInfouser;
floatsalary;
};
固然也能够界说为
structEmployee{
charname;
intid;
floatsalary;
};
javaclient测试源码(为申明成绩,假定struct字节对齐,sizeof(Employee)=28)
importjava.net.*;
/**
*与C言语通讯(java做Client,c/c++做Server,传送一个布局)
*@authorkingfish
*@version1.0
*/
classEmployee{
privatebyte[]buf=newbyte;//为申明成绩,定逝世巨细,事务中能够天真处置
/**
*将int转为低字节在前,高字节在后的byte数组
*/
privatestaticbyte[]toLH(intn){
byte[]b=newbyte;
b=(byte)(n&0xff);
b=(byte)(n>>8&0xff);
b=(byte)(n>>16&0xff);
b=(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的开发并没有必然的关系,也不见得在所以情况下,别人使用起来会简单。 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 是一种语言,用以产生「小应用程序(Applet(s)) 是一种突破用户端机器环境和CPU 是一种将安全性(Security)列为第一优先考虑的语言 Java是一种计算机编程语言,拥有跨平台、面向对java Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。 是一种突破用户端机器环境和CPU 象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。 如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 Pet Store.(宠物店)是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序,应该很具有权威性,想学J2EE和EJB的朋友不要 错过了。 Java是一种计算机编程语言,拥有跨平台、面向对java J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。
页:
[1]
2