I broke my head with this problem and I can't understand where I did wrong.
Code: Select all
*Buffer = AllocateMemory(2048)
If CreateNetworkServer(0, 2237, #PB_Network_UDP)
Debug "Server started on port 2237"
Repeat
Event = NetworkServerEvent()
If Event
ClientID = EventClient()
If Event = #PB_NetworkEvent_Data
Size = ReceiveNetworkData(ClientID, *Buffer, 1024)
If Size > 4
Debug "Got Long: " + Hex(PeekL(*Buffer), #PB_Long)
If PeekL(*Buffer) = $DABCCBAD ; Little-endian порядок
Debug "Got right packet (Little-endian)"
ElseIf PeekL(*Buffer) = $ADBCCBDA ; Big-endian порядок
Debug "Got right packet (Big-endian)"
EndIf
Debug "Got: " + Hex(PeekL(*Buffer), #PB_Long)
Debug "Got: " + Hex(PeekU(*Buffer), #PB_Byte)
Debug "Got: " + Hex(PeekU(*Buffer+1), #PB_Byte)
Debug "Got: " + Hex(PeekU(*Buffer+2), #PB_Byte)
Debug "Got: " + Hex(PeekU(*Buffer+3), #PB_Byte)
If (PeekU(*Buffer) = $AD And PeekU(*Buffer + 1) = $BC And PeekU(*Buffer + 2) = $CB And PeekU(*Buffer + 3) = $DA)
Debug "Got right packet"
EndIf
EndIf
EndIf
EndIf
Until Event = #PB_NetworkEvent_Disconnect
CloseNetworkServer(0)
Else
MessageRequester("Error", "Can not create server!")
EndIf
FreeMemory(*Buffer)
Got Long: DACBBCAD
Got: DACBBCAD
Got: AD
Got: BC
Got: CB
Got: DA
So, expression (PeekU(*Buffer) = $AD And PeekU(*Buffer + 1) = $BC And PeekU(*Buffer + 2) = $CB And PeekU(*Buffer + 3) = $DA) and PeekL(*Buffer) = $ADBCCBDA is every time is false
