收发数据,给出具体代码,求高手解决方法

收发数据,给出具体代码,求高手
我创建的套接字是基于TCP的,
我想将一组不同类型的数据放入一个Buf里面,发送给服务器端,并将它们显示出来,
服务器端接受到数据之后也发送一组不同类型的数据给客户端,当然也是放在一个Buf里面进行发送,
问题是我假如定义
char a='1'; 
short b=12;
char sendBuf[100];
memcpy(&sendBuf[0],&a,1);
memcpy(&sendBuf[1],&b,2);
客户端:
send(sockClient,(char*)sendBuf,100,0);
服务器端:
recv(sockConn,(char *)recvBuf,100,0);
printf("%s ",recvBuf);
最后显示出来的结果是错误的。
谁可以给个具体代码。

------解决方案--------------------
怎样的错误?

不同机器之间发送“使用者认为有类型的数据”,可能会遇到大小端问题和字长不同问题
比如2字节数据0x0001,在big-endian下内存是01 00,在little-endian下内存分布是00 01
比如有些编译器将int作为2字节,而有些编译器则将int作为4字节
------解决方案--------------------
你接收的是二进制数据,又不是字符串,用%s打印出来的当然是错的
------解决方案--------------------
探讨

你接收的是二进制数据,又不是字符串,用%s打印出来的当然是错的

------解决方案--------------------
可以定义一个结构体
Msg
{
int a;
char b[1024];
};
然后发送客户端:
Msg msg;
Msg* pmsg=&msg;
pmsg->a=10;
memcpy(pmsg,"123",strlen("123"));

send(sockClient,(char*)sendBuf,sizeof(Msg),0);
------解决方案--------------------
不知道有多少前人掉在TCP Socket
send(人多)send(病少)send(财富)
recv(人多病)recv(少财富)
陷阱里面啊!

------解决方案--------------------
探讨

可以定义一个结构体
Msg
{
int a;
char b[1024];
};
然后发送客户端:
Msg msg;
Msg* pmsg=&msg;
pmsg->a=10;
memcpy(pmsg,"123",strlen("123"));

send(sockClient,(char*)sendBuf,sizeof(Msg),0);