资源简介
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写的RPG小游戏
- JAVA GUI火车票管理系统JAVA+MySQLJava Sw
- Java图书管理系统,jsp+Servlet利用mvc模
- 理发店管理系统
- JAVA学生在线选课系统的设计与实现
- Java Persistence with MyBatis 3娄娈翻译,带
- JAVA办公自动化系统(源代码+论文+外
- java实现简单登录注册系统
- 指纹识别代码java
- Java Concurrency in Practice 原版pdf by Goe
- java org jar包
- JavaEE_BBS论坛系统
- Java网页设计
- 历年计算机等级考试Java真题—word版含
- 基于JAVA和MySQL的商品销售管理系统(
- 活动管理系统初学者作品
- MLDN李兴华JAVA_WEB笔记pdf文档
- 网上宠物商店系统JSP+JavaBean+JDBC
- javaweb使用rsa加密解密jar包
- 物流信息管理系统 java源代码
- java_CS架构《酒店管理系统》源码
- mysql-connector-java-8.0.12
- java版socket编程实现局域网聊天和文件
- SM2密码算法的Java实现与评测
- EasyPR-Java 的jar包
- 四川轻化工大学Java复习题-王非老师版
- 银行账户管理系统
- java核心技术卷一/卷二(原书第十版)
- 南京大学java课件ppt英文
- javaweb实现分页以及数据库增删改查
评论
共有 条评论