proto.h
上传用户:hgd7758
上传日期:2007-12-10
资源大小:29k
文件大小:2k
源码类别:

TCP/IP协议栈

开发平台:

Visual C++

  1. /* P2P 程序传输协议
  2.  * 
  3.  * 日期:2004-5-21
  4.  *
  5.  * 作者:shootingstars(zhouhuis22@sina.com)
  6.  *
  7.  */
  8. #pragma once
  9. #include <list>
  10. // 定义iMessageType的值
  11. #define LOGIN 1
  12. #define LOGOUT 2
  13. #define P2PTRANS 3
  14. #define GETALLUSER  4
  15. // 服务器端口
  16. #define SERVER_PORT 2280
  17. // Client登录时向服务器发送的消息
  18. struct stLoginMessage
  19. {
  20. char userName[10];
  21. char password[10];
  22. };
  23. // Client注销时发送的消息
  24. struct stLogoutMessage
  25. {
  26. char userName[10];
  27. };
  28. // Client向服务器请求另外一个Client(userName)向自己方向发送UDP打洞消息
  29. struct stP2PTranslate
  30. {
  31. char userName[10];
  32. };
  33. // Client向服务器发送的消息格式
  34. struct stMessage
  35. {
  36. int iMessageType;
  37. union _message
  38. {
  39. stLoginMessage loginmember;
  40. stLogoutMessage logoutmember;
  41. stP2PTranslate translatemessage;
  42. }message;
  43. };
  44. // 客户节点信息
  45. struct stUserListNode
  46. {
  47. char userName[10];
  48. unsigned int ip;
  49. unsigned short port;
  50. };
  51. // Server向Client发送的消息
  52. struct stServerToClient
  53. {
  54. int iMessageType;
  55. union _message
  56. {
  57. stUserListNode user;
  58. }message;
  59. };
  60. //======================================
  61. // 下面的协议用于客户端之间的通信
  62. //======================================
  63. #define P2PMESSAGE 100               // 发送消息
  64. #define P2PMESSAGEACK 101            // 收到消息的应答
  65. #define P2PSOMEONEWANTTOCALLYOU 102  // 服务器向客户端发送的消息
  66.                                      // 希望此客户端发送一个UDP打洞包
  67. #define P2PTRASH        103          // 客户端发送的打洞包,接收端应该忽略此消息
  68. // 客户端之间发送消息格式
  69. struct stP2PMessage
  70. {
  71. int iMessageType;
  72. int iStringLen;         // or IP address
  73. unsigned short Port; 
  74. };
  75. using namespace std;
  76. typedef list<stUserListNode *> UserList;