Commit c39fc21d authored by Pavel Vainerman's avatar Pavel Vainerman

(UNetUDP): добавил "волшебное число" в заголовок пакетов, чтобы

отделять свои пакеты от каких-то других..
parent 03357959
......@@ -167,6 +167,13 @@ size_t UDPMessage::getMessage( UDPMessage& m, UDPPacket& p )
memcpy(&m,&(p.data[i]),sizeof(UDPHeader));
i += sizeof(UDPHeader);
// проверяем наш ли пакет..
if( m.magic != UniSetUDP::UNETUDP_MAGICNUM )
{
m.magic = 0;
return 0;
}
// копируем аналоговые данные
size_t sz = m.acount*sizeof(UDPAData);
if( sz > sizeof(m.a_dat) )
......
......@@ -15,9 +15,13 @@ namespace UniSetUDP
(по количеству битов такого же размера).
*/
const unsigned int UNETUDP_MAGICNUM = 0xfb07ee55; // идентификатор протокола
struct UDPHeader
{
UDPHeader():num(0),nodeID(0),procID(0),dcount(0),acount(0){}
UDPHeader():magic(UNETUDP_MAGICNUM),num(0),nodeID(0),procID(0),dcount(0),acount(0){}
unsigned int magic;
unsigned long num;
long nodeID;
long procID;
......@@ -63,7 +67,7 @@ namespace UniSetUDP
UDPMessage();
UDPMessage( UDPPacket& p );
size_t transport_msg( UDPPacket& p );
size_t transport_msg( UDPPacket& p );
static size_t getMessage( UDPMessage& m, UDPPacket& p );
size_t addDData( long id, bool val );
......@@ -78,7 +82,6 @@ namespace UniSetUDP
inline bool isFull(){ return ((dcount<MaxDCount) && (acount<MaxACount)); }
inline int dsize(){ return dcount; }
inline int asize(){ return acount; }
// inline int byte_size(){ return (dcount*sizeof(long)*UDPDData) + acount*sizeof(UDPAData)); }
// количество байт в пакете с булевыми переменными...
int d_byte(){ return dcount*sizeof(long) + dcount; }
......
......@@ -420,6 +420,12 @@ bool UNetReceiver::recv()
return false;
}
if( pack.magic != UniSetUDP::UNETUDP_MAGICNUM )
{
// пакет не нашей "системы"
return false;
}
if( rnum>0 && labs(pack.num - rnum) > maxDifferens )
{
/* А что делать если мы уже ждём и ещё не "разгребли предыдущее".. а тут уже повторный "разрыв"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment