IPv4.pas 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. { $HDR$}
  2. {**********************************************************************}
  3. { Unit archived using Team Coherence }
  4. { Team Coherence is Copyright 2002 by Quality Software Components }
  5. { }
  6. { For further information / comments, visit our WEB site at }
  7. { http://www.TeamCoherence.com }
  8. {**********************************************************************}
  9. {}
  10. { $Log: 14144: IPv4.pas
  11. {
  12. { Rev 1.0 12-7-2002 12:42:52 BGooijen
  13. { Tests to check if IPv4 and IPv6 works.
  14. { This is done by connection a TCPClient to a TCPServer.
  15. { NOTE: the IPv6 test fails when there is no IPv6 support in the OS.
  16. }
  17. unit IPv4;
  18. interface
  19. uses
  20. IndyBox;
  21. type
  22. TIPv4Box = class(TIndyBox)
  23. public
  24. procedure Test; override;
  25. end;
  26. implementation
  27. uses
  28. IdTCPServer, IdTCPClient, IdException, IdServerIOHandlerStack, IdIOHandlerStack, IdCoreGlobal,
  29. SysUtils;
  30. { TCommandHandlerProc }
  31. procedure TIPv4Box.Test;
  32. var
  33. LServer: TIdTCPServer;
  34. LServerIO:TIdServerIOHandlerStack;
  35. LClient: TIdTCPClient;
  36. LClientIO:TIdIOHandlerStack;
  37. begin
  38. LServer:= nil;
  39. LServerIO:= nil;
  40. LClient:= nil;
  41. LClientIO:= nil;
  42. try
  43. LServer:= TIdTCPServer.Create(nil);
  44. LServerIO:= TIdServerIOHandlerStack.Create(nil);
  45. LServer.IOHandler:= LServerIO;
  46. with LServer.Bindings.Add do begin
  47. IP:='0.0.0.0';
  48. Port:=12987;
  49. IPVersion:=Id_IPv4;
  50. end;
  51. try
  52. LServer.Active:=true;
  53. except on e: EIdException do
  54. Check(false, 'The TIdTCPServer failed to start: '+e.message);
  55. end;
  56. Check(LServer.Active, 'The TIdTCPServer doesn''t seem to be running, but no exception occured?'); // BGO: Just to be sure
  57. LClient:= TIdTCPClient.Create(nil);
  58. LClientIO:= TIdIOHandlerStack.Create(nil);
  59. LClient.IOHandler:=LClientIO;
  60. LClientIO.Host:='127.0.0.1';
  61. LClientIO.Port:=12987;
  62. LClientIO.IPVersion:=Id_IPv4;
  63. try
  64. LClient.Connect;
  65. except on e: EIdException do
  66. Check(false, 'The TIdTCPClient failed to connect: '+e.message);
  67. end;
  68. finally
  69. FreeAndNil( LServer );
  70. FreeAndNil( LServerIO );
  71. FreeAndNil( LClient );
  72. FreeAndNil( LClientIO );
  73. end;
  74. end;
  75. initialization
  76. TIndyBox.RegisterBox(TIPv4Box, 'IPv4 Support', 'Misc');
  77. end.