下面是mystar中的一个函数
- int SendFindServerPacket(libnet_t *l)
- {
- static uint8_t broadPackage[0x3E8] = { //广播包,用于寻找服务器
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x88,0x
- 8E,0x01,0x01,
- 0x00,0x00,0xFF,0xFF,0x37,0x77,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x
- 00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x15,0x00,0x00,0x13,0x11,0x
- 38,0x30,0x32,
- 0x31,0x78,0x2E,0x65,0x78,0x65,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x
- 00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x
- 02,0x1F,0x00,
- 0x00,0x00,0x00,0x00,0x13,0x11,0x00,0x28,0x1A,0x28,0x00,0x00,0x13,0x
- 11,0x17,0x22,
- 0x92,0x68,0x64,0x66,0x92,0x94,0x62,0x66,0x91,0x93,0x95,0x62,0x93,0x
- 93,0x91,0x94,
- 0x64,0x61,0x64,0x64,0x65,0x66,0x68,0x94,0x98,0xA7,0x61,0x67,0x65,0x
- 67,0x9C,0x6B};
-
- uint8_t StandardAddr[] = {0x01,0x80,0xC2,0x00,0x00,0x03};
- uint8_t StarAddr[] = {0x01,0xD0,0xF8,0x00,0x00,0x03};
- extern uint8_t m_localMAC[6];
- extern int m_authenticationMode;
- if (m_authenticationMode==1) memcpy(broadPackage,StarAddr,6);
- else memcpy( broadPackage, StandardAddr, 6 );
- memcpy( broadPackage+6, m_localMAC, 6 ); //填充MAC地址
- FillNetParamater( &broadPackage[0x17] );
- fputs(">>searching for server...\n",stdout);
- return (libnet_write_link(l,broadPackage, 0x3E8)==0x3E8)?0:-1;
- }
复制代码
注释说的很清楚,这是用来寻找服务器的广播包。
显然这应该是数据链路层的帧,按照帧的格式,前6字节是目的mac,按照我的理解,目的
mac全1才是广播啊,在本函数中,不管m_authenticationMode是什么,目的mac都不会是全
1啊,为什么是广播呢?
望大侠赐教
thx |