系统包括一些客户端和服务器。客户端向服务器发送消息有 3 种类型的消息:
- 连接设置:用户类型命令行:remote-chat
<IP addr server>
:: ,客户端和服务器聊天之间将建立一个链接TCP连接。TCP连接建立后,客户端发送连接建立信息,包括一些字段:<port addr server>
<IP address client>
<port addr client>
- 消息标识符:是一个 32 位整数。对于连接设置消息,此字段等于 0。
- 字段 客户端 2 的 IP 地址(客户端 1 调用),客户端 2 的端口地址。
服务器收到此消息。然后创建与客户端 2 的连接。
- 数据交换:用于客户端和服务器之间的数据交换。包括一些字段:
- 消息标识符:是一个 32 位整数。对于数据交换消息,此字段 = 1
- 数据长度:一个整数,表示文本消息的长度。
- 数据文本字段:包含要交换的文本消息。
聊天服务器收到客户端 1 发来的数据后,将文本消息从客户端 1 传输到客户端 2(客户端 2 也使用数据交换消息)。
所以我的问题是:如何发送带有某些字段的消息?我已经知道通过函数 send() 发送字符串。在这里,我必须发送消息连接设置或与某些字段进行数据交换,然后我是否在客户端使用打包然后在服务器端解包?请给我一些解决这个问题的方法?
我认为使用:
typedef struct _ConnectionSetup_Message
{
int message_ID; // 0 ConnectionSetup message
unsigned int Port;
unsigned shor IP;
} HELLO_Message;
typedef struct _DataExchange_Message
{
int message_Length;
int message_ID; // 1 for DataExchange message
char *text;
} DataExchange_Message;