资源简介
java与c++通过socket通信。其中java作为客户端,c++作为服务器。主要解决了C++中的结构体在java中如何实现和模拟。还有int,float,及字符串的处理。极具代表性。

代码片段和文件信息
import java.net.*;
/**
* 与c语言通信(java做client,c/c++做server,传送一个结构)
*
* @author kingfish
* @version 1.0
*/
public class Employee {
private byte[] buf = new byte[28]; // 为说明问题,定死大小,事件中可以灵活处理
/**
* 将int转为低字节在前,高字节在后的byte数组
*/
private static byte[] tolh(int n) {
byte[] b = new byte[4];
b[0] = (byte) (n & 0xff);
b[1] = (byte) (n >> 8 & 0xff);
b[2] = (byte) (n >> 16 & 0xff);
b[3] = (byte) (n >> 24 & 0xff);
return b;
}
/**
* 将byte数组转化成String
*/
private static String toStr(byte[] valArrint maxLen) {
int index = 0;
while(index < valArr.length && index < maxLen) {
if(valArr[index] == 0) {
break;
}
index++;
}
byte[] temp = new byte[index];
System.arraycopy(valArr 0 temp 0 index);
return new String(temp);
}
/**
* 将低字节在前转为int,高字节在后的byte数组
*/
private static int vtolh(byte[] bArr) {
int n = 0;
for(int i=0;i int left = i*8;
n+= (bArr[i] << left);
}
return n;
}
public String name = ““;
public int id = 0;
public float salary = 0;
/**
* 将float转为低字节在前,高字节在后的byte数组
*/
private static byte[] tolh(float f) {
return tolh(Float.floatToRawIntBits(f));
}
private static Employee getEmployee(byte[] bArr) {
String name = ““;
int id = 0;
float salary = 0;
byte[] temp = new byte[20];
name = toStr(bArr20);
System.arraycopy(bArr 20 temp 0 4);
id = vtolh(temp);
return new Employee(name id salary);
}
/**
* 构造并转换
*/
public Employee(String name int id float salary) {
this.name = name;
this.id = id;
this.salary = salary;
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);
}
/**
* 返回要发送的数组
*/
public byte[] getbuf() {
return buf;
}
/**
* 发送测试
*/
public static void main(String[] args) {
try {
int index = 0;
byte[] receive = new byte[28];
int k=15;
while(k>0){
Socket sock = new Socket(“127.0.0.1“ 5050);
System.out.println(“send content: name=kingfish “+“value=“+(1+index));
sock.getOutputStream().write(new Employee(“kingfish“+index 1+index++ 10.99f + index).getbuf());
sock.getInputStream().read(receive);
Employee ee = getEmployee(receive);
System.out.println(“ response: name=“+ee.name+“ “+“value=“+ee.id);
k--;
sock.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
} // end
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2572 2012-09-25 11:14 java与c++通过socket通信\Employee.class
文件 2749 2012-09-25 11:11 java与c++通过socket通信\Employee.java
文件 188477 2012-09-25 11:16 java与c++通过socket通信\Server\Debug\Server.exe
文件 198420 2012-09-25 11:16 java与c++通过socket通信\Server\Debug\Server.ilk
I.A.... 3637416 2012-09-25 11:16 java与c++通过socket通信\Server\Debug\Server.pch
文件 451584 2012-09-25 11:16 java与c++通过socket通信\Server\Debug\Server.pdb
文件 14297 2012-09-25 11:16 java与c++通过socket通信\Server\Debug\source.obj
文件 140288 2012-09-25 11:16 java与c++通过socket通信\Server\Debug\vc60.idb
文件 77824 2012-09-25 11:16 java与c++通过socket通信\Server\Debug\vc60.pdb
文件 4284 2012-09-25 10:35 java与c++通过socket通信\Server\Server.dsp
文件 518 2012-09-25 10:35 java与c++通过socket通信\Server\Server.dsw
文件 41984 2012-09-25 11:16 java与c++通过socket通信\Server\Server.ncb
文件 48640 2012-09-25 11:16 java与c++通过socket通信\Server\Server.opt
文件 1264 2012-09-25 11:16 java与c++通过socket通信\Server\Server.plg
文件 1814 2012-09-25 11:16 java与c++通过socket通信\Server\source.cpp
目录 0 2012-09-25 11:16 java与c++通过socket通信\Server\Debug
目录 0 2012-09-25 11:16 java与c++通过socket通信\Server
目录 0 2012-09-25 11:47 java与c++通过socket通信
----------- --------- ---------- ----- ----
4812131 18
- 上一篇:android简单计算器代码
- 下一篇:hibernate4 必须jar 包
相关资源
- java串口通信全套完整代码-导入eclip
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
- [免费]java实现有障碍物的贪吃蛇游戏
评论
共有 条评论