如题,客户提供了c写的socket服务端,需要我们用java写个客户端调用,因为传送的参数是个结构体:
 struct structData
 {
    unsigned short  fType
    char     fIndex
    union
    {
        struct
        {
            char    mNote:2;  
            char    mOp:6;      
        };
        char  fRecieve;
    };
    long  fKey;
 }
 不知道用java怎么封装这样的参数,网上搜了些,但是没有头绪,特来求救,急啊~不胜感激

解决方案 »

  1.   

    首先明确,socket 协议不存在什么结构体问题,那是一个内部调用才有的。建议你们采用xml协议,将数据封装进行传递。
      

  2.   

    谢谢楼上这么晚还来解答。客户的服务端代码有其它原因不可能修改了。网上搜了些,好像可以用java类替代然后构造成特定的btye[]传递。偶试了下,但是没有成功,不知道是否可行
      

  3.   

    java的客户端和服务器端的socket通信都是成对出现的啊!
       
      

  4.   

    答:若客户的服务端代码有其它原因不可能修改了,则现在也可行啊。要求:对方发送时,结构体之间的元素不能有padding,即:要求c方一定是:2个字节的fType ,1个字节的fIndex , 1个字节的fRecieve,4个字节的long  fKey; (共8个字节)则你读取时,可用DataInputStream中的readShort读fType,readByte读1个字节的fIndex 和 1个字节的fRecieve,用readInt读4个字节的long  fKey;以上仅供你参考
      

  5.   

    socket连接之间通信肯定是字节流或者数据报
    这些数据的组织肯定要有固定的格式,比如固定的头尾,中间多少字节代表什么意思,都是固定的
    发送方按这种固定的格式发送数据,接收方按相同的格式解释数据,然后把数据转化为对象数据就可以了我觉得楼主你要先知道c写的服务器端是什么格式发送数据的,这个格式很重要,你解析数据就要靠这个格式
    你根据解析的数据封装java类应该很容易
      

  6.   

    c中的结构体就相当于java中的一个类