Socket中的send函数可以发送字符串,但不能直接发送结构体,因此在发送端先把结构体转成字符串,然后用send发送,在接收端recv字符串,再转换成原先的结构体,这个就是解决问题的主要思路,实现中要注意的问题在下文阐述。
为了客户端之间能够互相通信,实现私聊,我采用服务器转发的方式,因此用户发送的每条消息中除了消息主体外,还必须包含有发送者、接收者ID等信息,如此采用结构体便是最佳的办法了。我定义的结构体如下:
发送端主要代码(为了简洁说明问题,我把用户输入的内容、长度等验证的代码去掉了):接收端主要代码: