1: /// <summary>
2: /// 发送普通信息
3: /// <remark>abu 2008-03-11 </remark>
4: /// </summary>
5: /// <param name="receiver">The receiver.</param>
6: /// <param name="message">The message.</param>
7: /// <param name="fontSytle">The font sytle.</param>
8: public void SendIM(int receiver, string message, FontStyle fontSytle)
9: { 10: int MaxByte = QQGlobal.QQ_MAX_SEND_IM;//取最长长度
11:
12:
13: if (Encoding.GetEncoding(QQGlobal.QQ_CHARSET_DEFAULT).GetBytes(message).Length > MaxByte)//判断是不是要分段发送
14: { 15: List<byte> messageBytes = new List<byte>();
16: messageBytes.AddRange(Utils.Util.GetBytes(message));
17: messageBytes.Add(0x20);//补一个空格,不补似乎也会出问题
18: int messageSize = messageBytes.Count;
19:
20: int totalFragments = ((messageSize % MaxByte) > 0) ? (messageSize / MaxByte + 1) : (messageSize / MaxByte);//计算分片数
21: for (int fragementSequence = 0; fragementSequence < totalFragments; fragementSequence++)
22: { 23: int index = fragementSequence * MaxByte;
24: int BytesSize = ((messageSize - index) > MaxByte) ? MaxByte : (messageSize - index);//不能每次都申请最大长度的byte数组,不然字体会出问题
25: byte[] messageFragementBytes = new byte[BytesSize];
26:
27:
28: messageBytes.CopyTo(index, messageFragementBytes, 0, BytesSize);
29: SendIM(receiver, messageFragementBytes, totalFragments, fragementSequence, fontSytle);
30:
31:
32: }
33: }
34: else
35: { 36: SendIM(receiver, Utils.Util.GetBytes(message), 1, 0, fontSytle);
37: }
38: }
39: /// <summary>
40: /// 发送普通信息
41: /// <remark>abu 2008-03-11 </remark>
42: /// </summary>
43: /// <param name="receiver">The receiver.</param>
44: /// <param name="message">The message.</param>
45: /// <param name="totalFragments">The total fragments.总分块数</param>
46: /// <param name="fragementSequence">The fragement sequence.当前当块序号</param>
47: /// <param name="fontSytle">The font sytle.</param>
48: public void SendIM(int receiver, byte[] message, int totalFragments,
49: int fragementSequence, FontStyle fontSytle)
50: { 51: SendIMPacket packet = new SendIMPacket(QQUser);
52: packet.Receiver = receiver;
53: packet.Message = message;//Utils.Util.GetBytes(message);
54: packet.TotalFragments = totalFragments;
55: packet.FragmentSequence = fragementSequence;
56: packet.FontStyle = fontSytle;
57: QQClient.PacketManager.SendPacket(packet, QQPort.Main.Name);
58: }