P2pCommon.pas
上传用户:zhanghw123
上传日期:2021-11-15
资源大小:312k
文件大小:2k
源码类别:

P2P编程

开发平台:

Delphi

  1. Unit P2pCommon;
  2. Interface
  3. Uses
  4.   Windows, SysUtils, Classes,
  5.   NMUDP;
  6. Type
  7.   TP2pBinding = Packed Record
  8.     PeerIP: String;
  9.     PeerPort: Integer;
  10.   End;
  11.   TP2pUserConfig = Class
  12.   Private
  13.     FSayHelloInv: Integer; {心跳间隔时间}
  14.     FLastSayHelloTime: Cardinal; {*最后一次心跳的时间}
  15.     FSayHelloCount: Byte; {重发心跳包 无回应就断开的次数}
  16.     FMaxSendCount: Word; {每次最大发送量}
  17.     FServerRSPtime: Cardinal; {服务器返回最后时间}
  18.   Public
  19.     {心跳间隔时间}
  20.     Property Livinginv: Integer Read FSayHelloInv Write FSayHelloInv;
  21.     {上次心跳时间}
  22.     Property LastLiveTime: Cardinal Read FLastSayHelloTime Write FLastSayHelloTime;
  23.     {可以存活的次数}
  24.     Property LifePoint: Byte Read FSayHelloCount Write FSayHelloCount;
  25.     {服务器返回的时间}
  26.     Property ServerRspTime: Cardinal Read FServerRSPtime Write FServerRSPtime;
  27.     Constructor Create; Overload;
  28.     Destructor Destroy; Override;
  29.   End;
  30.   TP2pUser = Class
  31.   Public
  32.     Binding: TP2pBinding;
  33.     Address: String;
  34.     Id: Cardinal; //用户唯一标示
  35.     Call: String;
  36.     Socket: TNMUDP;
  37.     ListOwer: TObject; {客户端所用记录List的句柄}
  38.     MMCfg: TP2pUserConfig; {配置文件}
  39.     Constructor Create(ABinding: TP2pBinding; IsCreateUdp: boolean = True);
  40.     Destructor Destroy; Override;
  41.   End;
  42. Implementation
  43. {P2pUserConfig}
  44. Constructor TP2pUserConfig.Create;
  45. Begin
  46.   FSayHelloInv := 30 * 1000; {默认30秒心跳一次}
  47.   FLastSayHelloTime := GetTickCount;
  48.   FSayHelloCount := 2; {重试心跳次数}
  49.   FMaxSendCount := 16; {每次最大的发送总量}
  50.   FServerRSPtime := GetTickCount;
  51. End;
  52. Destructor TP2pUserConfig.Destroy;
  53. Begin
  54.   Inherited;
  55. End;
  56. {P2pUser}
  57. Constructor TP2pUser.Create(ABinding: TP2pBinding; IsCreateUdp: boolean);
  58. Begin
  59.   Binding := ABinding;
  60.   Address := Binding.PeerIP + ':' + IntToStr(Binding.PeerPort);
  61.   MMCfg := TP2pUserConfig.Create;
  62.   If IsCreateUdp Then
  63.   Begin
  64.     Socket := TNMUDP.Create(Nil);
  65.     Socket.RemoteHost := Binding.PeerIP;
  66.     Socket.RemotePort := Binding.PeerPort;
  67.   End;
  68. End;
  69. Destructor TP2pUser.Destroy;
  70. Begin
  71.   If MMCfg <> Nil Then FreeAndNil(MMCfg);
  72.   If Socket <> Nil Then FreeAndNil(Socket);
  73.   Inherited;
  74. End;
  75. End.