第38章(第1 / 3页)
};
如果客户机接收到组播的消息,将自动调用函数MessageResponse来响应该消息。MessageResponse是虚函数,它将根据dwContentType信息决定如何处理到来的组播消息,具体功能由用户定义。
structGroupAddress
{
BYTEiDataType;//2个字节数据类型,宏定义为GROUP_ADDRESS
charstrGroupName[16];//16个字节的工作组名字
};
structDataQuery
{
BYTEiDataType;//2个字节数据类型,宏定义为DATA_QUERY
charstrGroupName[16];//16个字节的工作组名字
charstrDataName[16];//16个字节的数据名字
客户机调用函数MulticastMessage向指定的组(根据组播地址)播放消息。组播的数据报结构DataMulticast定义如下:
structDataMulticast
{
DWORDdwContentType;//组播的数据报类型,由用户定义
char*pchContent;//组播的数据报内容,由用户定义
};
(2)服务器接收到查询时,按照DataQuery结构中的strGroupName和strDataName进行搜索。如果该数据不存在,Server向Client发送一个FALSE标志。如果该数据存在,服务器先向客户机发送一个TRUE标志,之后立即再向客户机发送该数据(DataPublish格式)。
如果客户机得到TRUE标志的查询结果,就调用函数SubscribeData来接收服务器发送过来的数据。
三、客户程序的“组播”协议
客户机先调用函数QueryGroupIP向服务器发送一个GroupAddress格式的报文,用于查询组播地址。服务器返回相应的十进制点分式的IP地址。