第一部分请见http://blog.csdn.net/kingfish/archive/2005/03/29/333635.aspx 本部分提出另外一种做法, 供参考。  import java.net.*; import java.io.*;
 /**  * 与C语言通信(java做Client,c/c++做Server,传送一个结构)  * @author kingfish  * @version 1.0  */ public class Employee2 {   private String name;   private int id;   private float salary;   /**    * 将int转为低字节在前,高字节在后的int    */   private static int toLH(int in) {     int out = 0;     out = (in & 0xff) << 24;     out |= (in & 0xff00) << 8;     out |= (in & 0xff0000) >> 8;     out |= (in & 0xff000000) >> 24;     return out;   }   /**    * 将float转为低字节在前,高字节在后的int    */   private static int toLH(float f) {     return toLH(Float.floatToRawIntBits(f));   }   /**    * 构造并转换    */   public Employee2(String name, int id, float salary) {     this.name = name;     this.id = id;     this.salary = salary;   }   /**    * 取得名字,定长byte数组    */   public byte[] getName() {     byte[] b = new byte[20];     System.arraycopy(name.getBytes(), 0, b, 0, name.getBytes().length);     return b;   }   /**    * 取得编号(低字节在前)    */   public int getId() {     return toLH(id);   }   /**    * 取得工资(低字节在前)    */   public int getSalary() {     return toLH(salary);   }   /**    * 发送测试    */   public static void main(String[] args) {     try {       Employee2 p = new Employee2("kingfish", 123456789, 8888.99f);       Socket sock = new Socket("127.0.0.1", 8888);       DataOutputStream dos = new DataOutputStream(sock.getOutputStream());       dos.write(p.getName());       dos.writeInt(p.getId());       dos.writeInt(p.getSalary());       sock.close();     }     catch (Exception e) {       e.printStackTrace();     }   } } //end ----------------------------------------------------------------------------------------------------- 如有任何问题,请指正! kingfish 2005.3.30  
 
  |