ZMQCase.pas 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. unit ZMQCase;
  2. interface
  3. {$I zmq.inc}
  4. uses
  5. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  6. Dialogs, zmq, StdCtrls;
  7. type
  8. TZMQCaseFrm = class(TForm)
  9. btnReq: TButton;
  10. btnVersion: TButton;
  11. lblVersion: TLabel;
  12. mmo1: TMemo;
  13. procedure btnVersionClick(Sender: TObject);
  14. procedure btnReqClick(Sender: TObject);
  15. private
  16. procedure Rep;
  17. { Private declarations }
  18. public
  19. { Public declarations }
  20. end;
  21. var
  22. ZMQCaseFrm: TZMQCaseFrm;
  23. implementation
  24. procedure TZMQCaseFrm.btnReqClick(Sender: TObject);
  25. begin
  26. Rep;
  27. end;
  28. procedure TZMQCaseFrm.btnVersionClick(Sender: TObject);
  29. var
  30. major, minor, patch: Integer;
  31. begin
  32. zmq_version(major, minor, patch);
  33. lblVersion.Caption := Format('zmq version:%d.%d.%d', [major, minor, patch]);
  34. end;
  35. procedure TZMQCaseFrm.Rep;
  36. var
  37. context,
  38. req: Pointer;
  39. request,
  40. reply: zmq_msg_t;
  41. count: size_t;
  42. str: PChar;
  43. utf8Str: Utf8String;
  44. begin
  45. context := zmq_init(1);
  46. req := zmq_socket(context, ZMQ_REQ);
  47. zmq_setsockopt(req, ZMQ_IDENTITY, PChar('lqq'), 3);
  48. zmq_connect(req, 'tcp://192.168.1.100:11103');
  49. while True do
  50. begin
  51. utf8Str := 'World';
  52. count := Length(utf8Str);
  53. zmq_msg_init_size(request, count);
  54. Move(utf8Str[1], zmq_msg_data(request)^, Length(utf8Str));
  55. zmq_sendmsg(req, request, 0);
  56. Application.HandleMessage;
  57. zmq_msg_init(reply);
  58. zmq_recvmsg(req, reply, 0);
  59. count := zmq_msg_size(reply);
  60. str := GetMemory(count);
  61. CopyMemory(str, zmq_msg_data(reply), count);
  62. mmo1.Lines.Add(string(str));
  63. FreeMemory(str);
  64. Application.HandleMessage;
  65. zmq_msg_close(reply);
  66. zmq_msg_close(request);
  67. Sleep(500);
  68. end;
  69. zmq_close( req );
  70. zmq_term( context );
  71. end;
  72. {$R *.dfm}
  73. end.