| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- unit ZMQCase;
- interface
- {$I zmq.inc}
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, zmq, StdCtrls;
- type
- TZMQCaseFrm = class(TForm)
- btnReq: TButton;
- btnVersion: TButton;
- lblVersion: TLabel;
- mmo1: TMemo;
- procedure btnVersionClick(Sender: TObject);
- procedure btnReqClick(Sender: TObject);
- private
- procedure Rep;
- { Private declarations }
- public
- { Public declarations }
- end;
- var
- ZMQCaseFrm: TZMQCaseFrm;
- implementation
- procedure TZMQCaseFrm.btnReqClick(Sender: TObject);
- begin
- Rep;
- end;
- procedure TZMQCaseFrm.btnVersionClick(Sender: TObject);
- var
- major, minor, patch: Integer;
- begin
- zmq_version(major, minor, patch);
- lblVersion.Caption := Format('zmq version:%d.%d.%d', [major, minor, patch]);
- end;
- procedure TZMQCaseFrm.Rep;
- var
- context,
- req: Pointer;
- request,
- reply: zmq_msg_t;
- count: size_t;
- str: PChar;
- utf8Str: Utf8String;
- begin
- context := zmq_init(1);
- req := zmq_socket(context, ZMQ_REQ);
- zmq_setsockopt(req, ZMQ_IDENTITY, PChar('lqq'), 3);
- zmq_connect(req, 'tcp://192.168.1.100:11103');
- while True do
- begin
- utf8Str := 'World';
- count := Length(utf8Str);
- zmq_msg_init_size(request, count);
- Move(utf8Str[1], zmq_msg_data(request)^, Length(utf8Str));
- zmq_sendmsg(req, request, 0);
- Application.HandleMessage;
- zmq_msg_init(reply);
- zmq_recvmsg(req, reply, 0);
- count := zmq_msg_size(reply);
- str := GetMemory(count);
- CopyMemory(str, zmq_msg_data(reply), count);
- mmo1.Lines.Add(string(str));
- FreeMemory(str);
- Application.HandleMessage;
- zmq_msg_close(reply);
- zmq_msg_close(request);
- Sleep(500);
- end;
- zmq_close( req );
- zmq_term( context );
- end;
- {$R *.dfm}
- end.
|