Client use this snac to send message thru server. Within the ICBM
(Inter-Client Basic Message) types (family 4), a channel is defined.
Each channel represents a different kind of message.
Channel 1 is used for what would commonly be called an "instant message" (plain
text messages). Channel 2 is used for complex messages (rtf, utf8) and
negotiating "rendezvous". These transactions end in something more
complex happening, such as a chat invitation, or a file transfer.
Channel 3 is used for chat messages (not in the same family as
these channels). Channel 4 is used for various ICQ messages.
Examples are normal messages, URLs, and old-style
authorization.
This snac contain one fixed part (target uin, channel, msg-id cookie)
and channel-dependend tlv-chain.
First dword in msg-id cookies is actually the computer uptime in milliseconds
(ie GetTickCount(), at least this is what the ICQ Lite and the other official
clients I have tested uses).
00 04 |
|
word |
|
SNAC family |
00 06 |
|
word |
|
SNAC subtype |
00 00 |
|
word |
|
SNAC flags |
xx xx xx xx |
|
dword |
|
SNAC request-id |
|
|
xx xx xx xx xx xx xx xx |
|
qword |
|
msg-id cookie |
|
xx xx |
|
word |
|
message channel (see table below) |
|
xx |
|
byte |
|
screenname string length |
|
xx .. |
|
string |
|
screenname string |
|
|
xx xx |
|
word |
|
TLV.Type(0xXX) - icbm info |
xx xx |
|
word |
|
TLV.Length |
|
|
|
| |
|
|
|
xx xx |
|
word |
|
TLV.Type(0xXX) - icbm info |
xx xx |
|
word |
|
TLV.Length |
|
|
|
| |
|
|
|
|