怎么用Tudpsocket来告诉局域网内的所有上线的计算机:我上线了?就象QQ似的。 最近在做一个类似QQ的小软件,我想使用Tudpsocket来进行局域网内消息广播,通知某个用户:‘我上线了’,我用D7下的Tudpsocket试了试,可怎么也接收不到消息,谁有例子给我一个,或帮帮我。[email protected] 谢谢了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这是我的代码procedure TForm1.FormCreate(Sender: TObject);beginudpsocket1.LocalHost:='192.168.1.252';udpsocket1.LocalPort :='8063';udpsocket1.RemoteHost :='192.168.1.255';udpsocket1.RemotePort :='8063';udpsocket1.Open;end;procedure TForm1.UdpSocket1Receive(Sender: TObject; Buf: PAnsiChar; var DataLen: Integer);var s:string;beginudpsocket1.Receiveln(s);edit2.Text :=s;end;procedure TForm1.SpeedButton1Click(Sender: TObject);var s:string;begins:=edit1.Text;udpsocket1.Sendln(s);end;可怎么也不触发UdpSocket1Receive事件,是不是我写错了?帮我改改吧!谢谢! 为什么要用udp啊?用tcp不是更好一点?? http://2ccc.com/article.asp?articleid=4看这个 udp不用连接,直接广播就可以了所以不用TCP我去那个网站看看谢谢大家了!!!! 那请问从哪里可以找到TNMUDP,我的是D7,没有这个组件,而且我也没有找到哪里可以下? TNMUDP是Delphi 6.0才有的组件,D7没有。而D7的TUDPSocket的LocalPort搞不懂怎么个用法。建议楼主换用TIdUDPServer和TIdUDPClient。 那能告诉我TIdUDPServer和TIdUDPClient怎么用吗? 把nmudp所在的package load进去就可以了,包名我忘记了,你自己查查,要不就改为TIdUDPServer或是Tudpsocket,都可以代替的,你了解他的思想就可以了 TIdUDPServer的例子:unit uServer;//Powered By Jadeluo, 2005/05/10interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Sockets, IdBaseComponent, IdComponent, IdUDPBase, IdUDPServer, IDSocketHandle;type TForm1 = class(TForm) Memo1: TMemo; IdUDPServer1: TIdUDPServer; procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);begin Self.Caption := 'Server'; Memo1.Lines.Clear; IdUDPServer1.DefaultPort := 6666; IdUDPServer1.Active := True;end;procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);var iLoop : Integer; iSize : Integer; bBuffer : array of Byte; sBuffer : String;begin iSize := AData.Size; SetLength (bBuffer, iSize); AData.ReadBuffer(bBuffer[0], iSize); sBuffer := ABinding.PeerIP + ' : '; for iLoop := 0 to iSize - 1 do begin sBuffer := sBuffer + chr(bBuffer[iLoop]); end; Memo1.Lines.Add(sBuffer);end;end. TIdUDPClient的例子:unit uClient;//Powered By Jadeluo, 2005/05/10interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Sockets, IdBaseComponent, IdComponent, IdUDPBase, IDSocketHandle, IdUDPClient;type TForm1 = class(TForm) edtAddress: TEdit; edtContent: TEdit; IdUDPClient1: TIdUDPClient; Button2: TButton; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);begin Self.Caption := 'Client'; edtAddress.Text := '192.168.1.255'; edtContent.Text := 'Hello!';end;procedure TForm1.Button1Click(Sender: TObject); //通过Send方法来进行广播begin IdUDPClient1.Send(edtAddress.Text, 6666, edtContent.Text);end;procedure TForm1.Button2Click(Sender: TObject); //通过Broadcast方法来进行广播begin IdUDPClient1.Broadcast(edtContent.Text, 6666);end;end. Delphi7的例子帮忙看看哪里不行没报错但是运行后的按键不管用 如何锁定系统屏幕 小弟我准备学delphi,请诸位大哥推荐几本电子书看看。 这个消息处理怎么做呢??? 开发的服务器端程序异常,有谁知道是怎么回事吗?(在线等待) 类型问题 高分!在线!加密! 数据库软件在我的机上正常,但在其他机上不正常? 如何注册OCx的控件,如formone6? 如何响应动态生成组件的事件?急!!! 关于Microsoft agent(小精灵)的问题,高手近来一起研究研究吧 这样定义的Button创建
begin
udpsocket1.LocalHost:='192.168.1.252';
udpsocket1.LocalPort :='8063';
udpsocket1.RemoteHost :='192.168.1.255';
udpsocket1.RemotePort :='8063';
udpsocket1.Open;
end;
procedure TForm1.UdpSocket1Receive(Sender: TObject; Buf: PAnsiChar;
var DataLen: Integer);
var
s:string;
begin
udpsocket1.Receiveln(s);
edit2.Text :=s;end;procedure TForm1.SpeedButton1Click(Sender: TObject);
var
s:string;
begin
s:=edit1.Text;
udpsocket1.Sendln(s);
end;可怎么也不触发UdpSocket1Receive事件,是不是我写错了?
帮我改改吧!谢谢!
用tcp不是更好一点??
看这个
所以不用TCP我去那个网站看看谢谢大家了!!!!
或是Tudpsocket,都可以代替的,你了解他的思想就可以了
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Sockets, IdBaseComponent, IdComponent, IdUDPBase,
IdUDPServer, IDSocketHandle;type
TForm1 = class(TForm)
Memo1: TMemo;
IdUDPServer1: TIdUDPServer;
procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
Self.Caption := 'Server';
Memo1.Lines.Clear;
IdUDPServer1.DefaultPort := 6666;
IdUDPServer1.Active := True;
end;procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
iLoop : Integer;
iSize : Integer;
bBuffer : array of Byte;
sBuffer : String;
begin
iSize := AData.Size;
SetLength (bBuffer, iSize);
AData.ReadBuffer(bBuffer[0], iSize);
sBuffer := ABinding.PeerIP + ' : ';
for iLoop := 0 to iSize - 1 do
begin
sBuffer := sBuffer + chr(bBuffer[iLoop]);
end;
Memo1.Lines.Add(sBuffer);
end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Sockets, IdBaseComponent, IdComponent, IdUDPBase,
IDSocketHandle, IdUDPClient;type
TForm1 = class(TForm)
edtAddress: TEdit;
edtContent: TEdit;
IdUDPClient1: TIdUDPClient;
Button2: TButton;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
Self.Caption := 'Client';
edtAddress.Text := '192.168.1.255';
edtContent.Text := 'Hello!';
end;procedure TForm1.Button1Click(Sender: TObject);
//通过Send方法来进行广播
begin
IdUDPClient1.Send(edtAddress.Text, 6666, edtContent.Text);
end;procedure TForm1.Button2Click(Sender: TObject);
//通过Broadcast方法来进行广播
begin
IdUDPClient1.Broadcast(edtContent.Text, 6666);
end;end.