想用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 谁能给我个自动生成数学公式的小程序,谢谢,100分 做网络管理还是软件开发,大家帮我分析下 DBGridEh中修改选中行 求助:msSQL表关连的正确方法(望帮助一把) 关于一个滚动的问题,有意思,一起进来讨论一下! 急,如何将我的程序和Iexplorer捆绑在一起 大家请帮我看看,这该如何做,一个小问题.. 怪,有兴趣者请进!!! 关于ADO的开销 关于数据表的设计问题 注册表某个项下面的默认值怎么读取? 问个很弱智的问题
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