for a message you can give a string or integer as command name / typ with it, then u can use select case and do something with this name/command.
for a 2 player tank game it will work but normal the host collect all input , means all messages each sync and send out updates.
same for client, a client process all messages each sync.
the new player position will be set via interpolation, not direct. similar a move to. this will look better.
see
https://en.wikipedia.org/wiki/Linear_interpolation
maybe u can use the tween commands.
the message struct itself stay same but if you have more than 2 players the input packets come in mixed order from clients.
tcp using a output buffer and also a input buffer / stack and each port u can understand as a drinking straw.
a special thing is a broadcast message. its a message from one to all.
see also the using of user defined structs / types.
http://www.appgamekit.com/documentation/principles/1_datatypes.htm
AGK (Steam) V2.0.16 : Windows 10 Pro 64 Bit : AMD (15.30.1025) Radeon R7 265 : Mac mini OS X 10.10 (Yosemite)