关于c socket的几个思考

没接触过这个东西,看了几天晕晕乎乎的,现在有几个地方不是很理解,还望大牛们不吝赐教。
send函数发送的是

 char*

类型的数据,那么在发送诸如 Uint16 32 string类型的时候就涉及到类型转换的问题了。
char是有符号的int8,这个直接强转会不会有问题啊,里面的道理不懂。
第二个,我们一般都会自己封装socket,在组包的时候,
比如我现在要发送的数据是
UINT16 ID
string name
UINT8 sex
我应该怎么组包呢,不可能是一条一条数据发送吧,肯定是把三条数据整合成一个

char* 

然后再发送的吧。求高人指点!实在像不太明白啊

其实发送都是发送首地址和长度,不管你是int unsigned int 还是什么,它在内存中的值是不变的,只是所占位数不一样
如果是发送包就把他们做成结构体,然后发送结构体就行

1。首先要明白socket是操作系统提供的,并不是c语言的组成部分,只是操作系统提供的接口可以从c语言里面调用。
2。不管你发送什么,其实都是内存中的数据,你需要的只是提供一个内存地址(指针)和发送的长度。
3。组织数据包的方法很多,看你的喜好。比如可以这样:
控制码 我的协议1。0\r\n
length:数据包长度\r\n
分片:xxx-xxx\r\n
字段1:数据\r\n
字段2:数据\r\n
\r\n
[数据]
当然也可以这样:
客户端:hello
服务器:hi
客户端:我要做xxx
服务器:ok
客户端:数据长度:xxx
服务器:ok
客户端:[数据]