IdTestIPMCastServer.pas 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. unit IdTestIPMCastServer;
  2. //http://www.rfc-editor.org/rfc/rfc1112.txt
  3. //http://www.rfc-editor.org/rfc/rfc1458.txt
  4. interface
  5. uses
  6. IdTest,
  7. IdObjs,
  8. IdSys,
  9. IdThreadSafe,
  10. IdSocketHandle,
  11. IdGlobal,
  12. IdIPMCastClient,
  13. IdIPMCastServer;
  14. type
  15. TIdTestIPMCastServer = class(TIdTest)
  16. private
  17. FClientRead:TIdThreadSafeString;
  18. procedure CallbackClientRead(Sender: TObject; const AData: TIdBytes; ABinding: TIdSocketHandle);
  19. published
  20. procedure TestBasic;
  21. end;
  22. implementation
  23. procedure TIdTestIPMCastServer.CallbackClientRead(Sender: TObject;
  24. const AData: TIdBytes; ABinding: TIdSocketHandle);
  25. var
  26. s:string;
  27. begin
  28. s:=BytesToString(AData);
  29. FClientRead.Append(s);
  30. end;
  31. procedure TIdTestIPMCastServer.TestBasic;
  32. var
  33. s:TIdIPMCastServer;
  34. c1:TIdIPMCastClient;
  35. const
  36. cTest='123';
  37. cMulticastPort=22299;
  38. cMulticastGroup='224.0.0.10';
  39. begin
  40. s:=TIdIPMCastServer.Create;
  41. c1:=TIdIPMCastClient.Create;
  42. FClientRead:=TIdThreadSafeString.Create;
  43. try
  44. s.Loopback:=False;
  45. s.Port:=cMulticastPort;
  46. s.TimeToLive:=10;
  47. s.MulticastGroup:=cMulticastGroup;
  48. s.Active:=True;
  49. c1.ThreadedEvent:=True;
  50. c1.DefaultPort:=cMulticastPort;
  51. c1.MulticastGroup:=cMulticastGroup;
  52. c1.OnIPMCastRead:=CallbackClientRead;
  53. c1.Active:=True;
  54. s.Send(cTest);
  55. Sleep(500);
  56. Assert(FClientRead.Value=cTest);
  57. finally
  58. Sys.FreeAndNil(c1);
  59. Sys.FreeAndNil(s);
  60. Sys.FreeAndNil(FClientRead);
  61. end;
  62. end;
  63. initialization
  64. TIdTest.RegisterTest(TIdTestIPMCastServer);
  65. end.