有人用过Delphi封装的zeromq吗?该如何处理
有人用过Delphi封装的zeromq吗?
我要利用zeromq库来传送数据。在网上下载了Delphi封装的zeromq库,其中也有现成的发送数据的例子,就是一个客户机,和一个会话房间,我应该怎么用它们来发送数据啊?其中要输入localhost,chatroomname,和daniele_teti,它们分别代表什么,我不大懂。截个图吧,不能贴图啊。我把源代码附上:
unit MainFormClient;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ZeroMQ;
type
TForm5 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Edit3: TEdit;
Memo1: TMemo;
Memo2: TMemo;
Button2: TButton;
tmr: TTimer;
procedure Button1Click(Sender: TObject);
procedure tmrTimer(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
zmq: TZeroMQ;
roomname: string;
ex: Integer;
public
{ Public declarations }
end;
var
Form5: TForm5;
implementation
{$R *.dfm}
procedure TForm5.Button1Click(Sender: TObject);
begin
if assigned(zmq) then
begin
tmr.Enabled := false;
zmq.Free;
end
else
begin
roomname := Edit2.Text;
zmq := TZeroMQ.Create;
zmq.Open(Edit1.Text);
//Setup for reading messages
zmq.CreateLocalQueue('Q_read');
zmq.Bind('E_' + roomname, 'Q_read');
//Setup for sending messages
ex := zmq.CreateLocalExchange('LocalE', zmqStyleDataDistribution);
zmq.Bind('LocalE','Q_' + roomname);
tmr.Enabled := true;
end;
end;
procedure TForm5.Button2Click(Sender: TObject);
begin
zmq.Send(ex, '[' + Edit3.Text + '] say...' + sLineBreak + Memo2.Lines.Text, zmqNoBlocking);
end;
procedure TForm5.tmrTimer(Sender: TObject);
var
msg: AnsiString;
mt: Cardinal;
ms: Int64;
begin
zmq.Receive(msg, mt, ms, zmqNoBlocking);
if ms > 0 then
Memo1.Lines.Add(msg);
end;
end.
------解决方案--------------------
hi,
你是在 http://www.danieleteti.it/?page_id=131 下载的么?
ZEROMQ 的 资料 请看 http://iyuan.iteye.com/blog/972949
我要利用zeromq库来传送数据。在网上下载了Delphi封装的zeromq库,其中也有现成的发送数据的例子,就是一个客户机,和一个会话房间,我应该怎么用它们来发送数据啊?其中要输入localhost,chatroomname,和daniele_teti,它们分别代表什么,我不大懂。截个图吧,不能贴图啊。我把源代码附上:
unit MainFormClient;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ZeroMQ;
type
TForm5 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Edit3: TEdit;
Memo1: TMemo;
Memo2: TMemo;
Button2: TButton;
tmr: TTimer;
procedure Button1Click(Sender: TObject);
procedure tmrTimer(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
zmq: TZeroMQ;
roomname: string;
ex: Integer;
public
{ Public declarations }
end;
var
Form5: TForm5;
implementation
{$R *.dfm}
procedure TForm5.Button1Click(Sender: TObject);
begin
if assigned(zmq) then
begin
tmr.Enabled := false;
zmq.Free;
end
else
begin
roomname := Edit2.Text;
zmq := TZeroMQ.Create;
zmq.Open(Edit1.Text);
//Setup for reading messages
zmq.CreateLocalQueue('Q_read');
zmq.Bind('E_' + roomname, 'Q_read');
//Setup for sending messages
ex := zmq.CreateLocalExchange('LocalE', zmqStyleDataDistribution);
zmq.Bind('LocalE','Q_' + roomname);
tmr.Enabled := true;
end;
end;
procedure TForm5.Button2Click(Sender: TObject);
begin
zmq.Send(ex, '[' + Edit3.Text + '] say...' + sLineBreak + Memo2.Lines.Text, zmqNoBlocking);
end;
procedure TForm5.tmrTimer(Sender: TObject);
var
msg: AnsiString;
mt: Cardinal;
ms: Int64;
begin
zmq.Receive(msg, mt, ms, zmqNoBlocking);
if ms > 0 then
Memo1.Lines.Add(msg);
end;
end.
------解决方案--------------------
hi,
你是在 http://www.danieleteti.it/?page_id=131 下载的么?
ZEROMQ 的 资料 请看 http://iyuan.iteye.com/blog/972949