想用indy的UDP组件做一个局域网的聊天程序,用户上线怎么做呢? 想用Indy的UDP组件自己做一个类似QQ的局域网聊天程序,大家上班时用。现在的问题是当用户上线时是发个广播消息吗?让在线人都知道,如果是的话,这个广播消息怎么发呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 delphi7 indy9unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, IdUDPClient, IdBaseComponent, IdComponent, IdUDPBase, IdUDPServer,IdStack,IdSocketHandle;type TForm1 = class(TForm) Button1: TButton; IdUDPServer1: TIdUDPServer; IdUDPClient1: TIdUDPClient; ListBox1: TListBox; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);begin//--xxx.xxx.xxx.255 是你的广播地址self.IdUDPClient1.Send('192.168.1.255',99999,GStack.LocalAddress);end;procedure TForm1.FormCreate(Sender: TObject);beginself.IdUDPServer1.DefaultPort:=99999;self.IdUDPServer1.Active:=True;end;procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);var strStream:TStringStream;begin strStream:= TStringStream.Create(''); try strStream.CopyFrom(AData,AData.Size); listbox1.Items.Add(strStream.DataString+'上线了'); except end;end;end. procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);var strStream:TStringStream;begin strStream:= TStringStream.Create(''); try strStream.CopyFrom(AData,AData.Size); listbox1.Items.Add(strStream.DataString+'上线了'); except end; strStream.Free;end; //--xxx.xxx.xxx.255 是你的广播地址是什么意思?是我的iP地址吗?你这种方法是向一个地址广播吗?我的意思是向所有iP地址广播,是不是UDP协议有这个功能呢? IdUDPServer1.BroadCastEnabled:=true;IdUDPServer1.BrodCast(Port,aMessage) delphi7 indy9unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, IdUDPClient, IdBaseComponent, IdComponent, IdUDPBase, IdUDPServer,IdStack,IdSocketHandle;type TForm1 = class(TForm) Button1: TButton; IdUDPServer1: TIdUDPServer; IdUDPClient1: TIdUDPClient; ListBox1: TListBox; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);begin//--xxx.xxx.xxx.255 是你的广播地址self.IdUDPClient1.Send('192.168.1.255',99999,GStack.LocalAddress);end;procedure TForm1.FormCreate(Sender: TObject);beginself.IdUDPServer1.DefaultPort:=99999;self.IdUDPServer1.Active:=True;end;procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);var strStream:TStringStream;begin strStream:= TStringStream.Create(''); try strStream.CopyFrom(AData,AData.Size); listbox1.Items.Add(strStream.DataString+'上线了'); except end;end;end. 这种方法要有服务器端,而且最好自己定个协议建议使用idtcpserver,idtcpclient DBGridEh的几个问题 用FindComponent查找Edit控件出错 如何将统计出来的结果用RMReport打印出来 在delphi5中,装了ado的补丁之后,dlephi5中的ado控件全不见了,怎么把ADO控件恢复啊?急!急!急! 怎样导入*.dbf文件 无边框,无任务栏显示的窗口怎么做!? 不知道这个东西怎么控制? 传奇的天骥的中转器的实现原理是什么? 问题:用EXCEL做好一个工作簿,然后想指定的单元格填数,可以实现,但是,我送完数据后,它老提示保存,这对于一条数据或数据量不大的时 问一个关于 用软件投资入股的 注册表某个项下面的默认值怎么读取? 问个很弱智的问题
delphi7
indy9unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdUDPClient, IdBaseComponent, IdComponent, IdUDPBase,
IdUDPServer,IdStack,IdSocketHandle;type
TForm1 = class(TForm)
Button1: TButton;
IdUDPServer1: TIdUDPServer;
IdUDPClient1: TIdUDPClient;
ListBox1: TListBox;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
//--xxx.xxx.xxx.255 是你的广播地址
self.IdUDPClient1.Send('192.168.1.255',99999,GStack.LocalAddress);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
self.IdUDPServer1.DefaultPort:=99999;
self.IdUDPServer1.Active:=True;
end;procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
strStream:TStringStream;
begin
strStream:= TStringStream.Create('');
try
strStream.CopyFrom(AData,AData.Size);
listbox1.Items.Add(strStream.DataString+'上线了');
except
end;
end;end.
ABinding: TIdSocketHandle);
var
strStream:TStringStream;
begin
strStream:= TStringStream.Create('');
try
strStream.CopyFrom(AData,AData.Size);
listbox1.Items.Add(strStream.DataString+'上线了');
except
end;
strStream.Free;
end;
是什么意思?是我的iP地址吗?
你这种方法是向一个地址广播吗?我的意思是向所有iP地址广播,是不是UDP协议有这个功能呢?
IdUDPServer1.BrodCast(Port,aMessage)
indy9unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IdUDPClient, IdBaseComponent, IdComponent, IdUDPBase,
IdUDPServer,IdStack,IdSocketHandle;type
TForm1 = class(TForm)
Button1: TButton;
IdUDPServer1: TIdUDPServer;
IdUDPClient1: TIdUDPClient;
ListBox1: TListBox;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
//--xxx.xxx.xxx.255 是你的广播地址
self.IdUDPClient1.Send('192.168.1.255',99999,GStack.LocalAddress);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
self.IdUDPServer1.DefaultPort:=99999;
self.IdUDPServer1.Active:=True;
end;procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
strStream:TStringStream;
begin
strStream:= TStringStream.Create('');
try
strStream.CopyFrom(AData,AData.Size);
listbox1.Items.Add(strStream.DataString+'上线了');
except
end;
end;end.
这种方法要有服务器端,而且最好自己定个协议建议使用idtcpserver,idtcpclient