重拳出击(一行解决!)(0分)

  • 主题发起人 主题发起人 wzs
  • 开始时间 开始时间
W

wzs

Unregistered / Unconfirmed
GUEST, unregistred user!
向网络广播地址x.x.x.255发送一条消息相当于向所有该网段的节点发送该消息
应用例子:局域网ICQ,BBS等。。。(采用FastNet组件)
 
procedure TForm_main.SentMsg(Str,IP:String);
var
AString:String;
MyStream: TStringStream;
begin
NMUDP1.RemoteHost :=IP ;
MyStream := TStringStream.Create(AString);
try
MyStream.Write(Str[1], Length(Str));
NMUDP1.SendStream(MyStream);
finally
MyStream.Free;
end;
end;
--------------------
procedure TForm_bbs.SpeedButton_SentClick(Sender: TObject);
const
FNet:String='192.168.0.';
var
Time_start:Tdatetime;
Hour, Min, Sec,sec1, MSec: Word;
i:integer;
MyName:string;
begin
if Edit_Msg.Text='' then
begin
Application.MessageBox('不能发送空消息! ','提示',MB_ICONSTOP);
exit;
end;
SpeedButton_Sent.Enabled :=false;
{ For i:=1 to 254do
begin
Form_main.SentMsg(Edit_Name.Text+#300+Edit_Msg.Text,FNet+inttostr(i) );
Application.ProcessMessages ;
end ;
}
Form_main.SentMsg(Edit_Name.Text+#300+Edit_Msg.Text,'192.168.0.255');
SpeedButton_Sent.Enabled :=True;
Edit_Msg.Text :='';
end;

 
一行大师,偶想你!
 
这就是网络广播啊,
ICS也可以只要是UDP协议就OK了啊。
另外,直接加255也不是全对的。
//----------------------
什么是函数?例如UDP协议中可以指定一个IP地址来进行通讯,也可以进行网络广播(即一次可以把信息发给同一个IP段)。我们知道,1~126.XXX.XXX.XXX (A类网)、128~191.XXX.XXX.XXX(B类网)、192~254.XXX.XXX.XXX(C类网)的广播地址分别为1~126.255.255.255 (A类网)、128~191.XXX.255.255(B类网)、192~254..XXX.XXX.255.(127开头的IP属于保留地址,如127.0.0.1是自己的地址)。比如说IP地址192.168.0.45属于C类网,那么它的广播地址就是192.168.0.255.又比如说IP地址125.161.0.45属于C类网,那么它的广播地址就是125.255.255.255.如果你经常要用到这个的话,这时候我们就可以写一个以下的函数:
Function Trun_ip(S:string):string;
var s1,s2,s3,ss,sss,Head:string;
n,m:integer;
begin
//s:=192.168.0.23
sss:=S;
n:=pos('.',s);
s1:=copy(s,1,n);//192.
m:=length(s1);
delete(s,1,m);
Head:=copy(s1,1,(length(s1)-1));
n:=pos('.',s);
s2:=copy(s,1,n);//168.
m:=length(s2);
delete(s,1,m);
n:=pos('.',s);
s3:=copy(s,1,n);//0.
m:=length(s3);
delete(s,1,m);
ss:=sss;//127.XXX.XXX.XXX
if strtoint(Head) in [1..126] then
ss:=s1+'255.255.255';
//1~126.255.255.255 (A类网)
if strtoint(Head) in [128..191] then
ss:=s1+s2+'255.255';//128~191.XXX.255.255(B类网)
if strtoint(Head) in [192..254] then
ss:=s1+s2+s3+'255';
//192~254.XXX.XXX.255(C类网)
Result:=ss;
////192.168.0.255
end;
使用这个函数时只要把一个有效的IP地址送进去,就会返回该IP地址的广播地址。如Trun_ip(192.168.0.45)就会返回192.168.0.255.
//---------------------------------
 
接受答案了.
 
后退
顶部