udppacket.h
上传用户:zslianheng
上传日期:2013-04-03
资源大小:946k
文件大小:2k
源码类别:

Linux/Unix编程

开发平台:

Visual C++

  1. /***************************************************************************
  2.  *                                                                         *
  3.  *   This program is free software; you can redistribute it and/or modify  *
  4.  *   it under the terms of the GNU General Public License as published by  *
  5.  *   the Free Software Foundation; either version 2 of the License, or     *
  6.  *   (at your option) any later version.                                   *
  7.  *                                                                         *
  8.  *   copyright            : (C) 2002 by Zhang Yong                         *
  9.  *   email                : z-yong163@163.com                              *
  10.  ***************************************************************************/
  11. #ifndef _UDP_PACKET_H
  12. #define _UDP_PACKET_H
  13. #include <time.h>
  14. #include "icqpacket.h"
  15. #include "icqsocket.h"
  16. #pragma pack(1)
  17. struct UDP_HEADER {
  18. uint16 ver;
  19. uint32 reserved;
  20. uint32 sid;
  21. uint16 seq;
  22. uint16 ackseq;
  23. uint16 cmd;
  24. uint32 uin;
  25. };
  26. #pragma pack()
  27. class UdpOutPacket : public IcqOutPacket {
  28. public:
  29. UdpOutPacket();
  30. void beginData() {
  31. realData = cursor;
  32. }
  33. void encrypt();
  34. int attempts;
  35. time_t expire;
  36. uint16 cmd;
  37. uint16 seq;
  38. private:
  39. char *realData;
  40. };
  41. class UdpInPacket : public IcqInPacket {
  42. public:
  43. UdpInPacket(const char *d, int len)
  44. : IcqInPacket(d, len) {
  45. cursor = data + sizeof(UDP_HEADER);
  46. }
  47. uint16 getVersion() { return ntohs(((UDP_HEADER *) data)->ver); }
  48. uint32 getSID() { return ntohl(((UDP_HEADER *) data)->sid); }
  49. uint16 getSeq() { return ntohs(((UDP_HEADER *) data)->seq); }
  50. uint16 getAckSeq() { return ntohs(((UDP_HEADER *) data)->ackseq); }
  51. uint16 getCmd() { return ntohs(((UDP_HEADER *) data)->cmd); }
  52. uint32 getUIN() { return ntohl(((UDP_HEADER *) data)->uin); }
  53. };
  54. #endif