1. 组装发送包函数:
int  make_package(buf,len,end,sn)
unsigned char *buf; /*发送数据包体缓冲区指针*/
int  len; /*发送数据包长度*/
int end; /*0:无后继包 1:有后继包*/
int sn; /*包序号*/
unsigned char *s; /*发送数据包缓冲区指针*/
char pkg_type; /* 包类型*/
char pkg_property; /* 包属性*/
{
unsigned long pkg_no; s[0]=0xff;
s[1]=0xff;
s[2]=(len>>8)&0xff;
s[3]=len&0xff;
pkg_no = htonl((unsigned long)sn);
memcpy(s+4, (void *)&pkg_no, 4);
s[8]=(s[2]+s[3])&0xff;
s[9]=end;
s[10]= pkg_type;
s[11]= pkg_property;
memcpy(s+12,buf,len);
s[len+12]=0xff;
s[len+13]=0xff;

return(len);
}
2. 接收函数
int tcp_rcv_dsf(sock,buf,s,len,time_out)
int sock;
unsigned char *buf; /*包体数据缓冲区指针 */
char    *s; /*包头数据缓冲区指针 */
int len; /*包长*/
{
int  i,j;
unsigned char* ss;
char  snBuf[5];
unsigned short  bufLen;

if ((i=readdata(sock,s,12))<=0) {
printf("tcp_rcv_dsf read error! read bytes: %d\n", i);
return(-2);
}
snBuf[3] = s[4];
snBuf[2] = s[5];
snBuf[1] = s[6];
snBuf[0] = s[7];
memcpy(s+4,snBuf,4);
memset((char *)&bufLen, 0x00, 4);
((char*)&bufLen)[0] = s[2]&0xff;
((char*)&bufLen)[1] = s[3]&0xff;
bufLen = ntohs(bufLen); len = bufLen;
j=len;
ss=buf;

while(j) {
i=readdata(sock,ss,j);
if (i<=0) {
write_log("tcp_rcv_dsf read ss error!");
return(-3);
}
j-=i;
ss+=i;
} if ((i=readdata(sock,s+12,2))<=0) {
write_log("tcp_rcv_dsf read s+12 error!");
return(-2);
}
buf[len]=0x00;
return(len);
}求解成java代码