UDPBox.pas 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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: 11281: UDPBox.pas
  11. {
  12. { Rev 1.0 11/12/2002 09:21:16 PM JPMugaas
  13. { Initial check in. Import from FTP VC.
  14. }
  15. unit UDPBox;
  16. interface
  17. uses
  18. IndyBox,
  19. Classes,
  20. IdSocketHandle;
  21. type
  22. TUDPBox = class(TIndyBox)
  23. protected
  24. procedure ServerRead(ASender: TObject; AData: TStream; ABinding: TIdSocketHandle);
  25. public
  26. procedure Test; override;
  27. end;
  28. implementation
  29. uses
  30. IdUDPServer, IdUDPClient,
  31. SysUtils;
  32. { TUDPBox }
  33. procedure TUDPBox.ServerRead(ASender: TObject; AData: TStream; ABinding: TIdSocketHandle);
  34. var
  35. i: integer;
  36. begin
  37. AData.ReadBuffer(i, SizeOf(i));
  38. Assert(i = 1);
  39. i := i + 1;
  40. TIdUDPServer(ASender).SendBuffer(ABinding.PeerIP, ABinding.PeerPort, i, SizeOf(i));
  41. end;
  42. procedure TUDPBox.Test;
  43. var
  44. i: integer;
  45. LServer: TIdUDPServer;
  46. begin
  47. LServer := TIdUDPServer.Create(nil); try
  48. with LServer do begin
  49. DefaultPort := 6000;
  50. OnUDPRead := ServerRead;
  51. ThreadedEvent := True;
  52. Active := True;
  53. end;
  54. with TIdUDPClient.Create(nil) do try
  55. Host := '127.0.0.1';
  56. Port := 6000;
  57. i := 1;
  58. SendBuffer(i, SizeOf(i));
  59. ReceiveBuffer(i, SizeOf(i));
  60. Check(i = 2, 'UDP Data failed.');
  61. finally Free; end;
  62. finally FreeAndNil(LServer); end;
  63. end;
  64. initialization
  65. TIndyBox.RegisterBox(TUDPBox, 'UDP', 'Misc');
  66. end.