//利用udp协议发消息: //首先找到广播地址: //1~126.255.255.255 (A类网广播地址) //128~191.XXX.255.255 (B类网广播地址) //192~254.XXX.XXX.255 (C类网广播地址) //两个定义: //LocalIP: String; //BroadCastIP: String;//广播地址procedure TMainForm.SetBroadCastIp; var i,j,iHead:Integer; sHead,s:String; ai:array [1..3] of integer; begin j:=1; for i:=0 to Length(LocalIP) do begin if LocalIP[i]='.' then begin ai[j]:=i; Inc(j); end; if j>3 then break; end; sHead:=Copy(LocalIp,1,ai[1]-1); iHead:=StrToInt(sHead); if iHead<128 then //A类网 begin BroadCastIP:=sHead+'.255.255.255'; end else begin if iHead<192 then //B类网 begin s:=Copy(LocalIP,1,ai[2]-1); BroadCastIP:=s+'.255.255'; end else //C类网 begin s:=Copy(LocalIP,1,ai[3]-1); BroadCastIP:=s+'.255'; end; end; end;procedure TMainForm.SendMsg(const IP, Msg: String);//这是利用udp向IP发送信息的过程。发广播的话,把BroadCastIP的值赋予IP begin MsgStream.Position:=0;//MsgStream定义如下:MsgStream: TMemoryStream; MsgStream.Size:=0; MsgStream.Write(Msg[1],Length(Msg)); NMUDP.RemoteHost:=IP; NMUDP.SendStream(MsgStream); end;有这两个函数,就可以发广播啦。
to rh:他是用什么协议通讯的!我要的是关于这种协议编程的例程,或者资料!不是要现成的程序!哈哈,怪我说的不清楚,大家误解了!
可是美萍(网管大师和安全卫士的连接)不是那种,程序自己就可以连,不用手工设置,不要什么ip!请问这些是怎么做的啊?
可否给点例子
若是动态ip的话
服务器,发一个广播,客户机收到广播后就根据服务器发来的地址告之服务器自己的ip
若是静态ip,连广播都不用,直接在安装程序时设置就好了
简单说就是怎么编软件,让a端不只道b端的ip地址,也可以通讯
—————在局域网里,请发广播,所有机子都能收到!
若是动态ip的话
服务器,发一个广播,客户机收到广播后就根据服务器发来的地址告之服务器自己的ip
若是静态ip,连广播都不用,直接在安装程序时设置就好了
简单说就是怎么编软件,让a端不只道b端的ip地址,也可以通讯
—————在局域网里,请发广播,所有机子都能收到!
//首先找到广播地址:
//1~126.255.255.255 (A类网广播地址)
//128~191.XXX.255.255 (B类网广播地址)
//192~254.XXX.XXX.255 (C类网广播地址)
//两个定义:
//LocalIP: String;
//BroadCastIP: String;//广播地址procedure TMainForm.SetBroadCastIp;
var
i,j,iHead:Integer;
sHead,s:String;
ai:array [1..3] of integer;
begin
j:=1;
for i:=0 to Length(LocalIP) do
begin
if LocalIP[i]='.' then
begin
ai[j]:=i;
Inc(j);
end;
if j>3 then break;
end;
sHead:=Copy(LocalIp,1,ai[1]-1);
iHead:=StrToInt(sHead);
if iHead<128 then //A类网
begin
BroadCastIP:=sHead+'.255.255.255';
end else
begin
if iHead<192 then //B类网
begin
s:=Copy(LocalIP,1,ai[2]-1);
BroadCastIP:=s+'.255.255';
end else //C类网
begin
s:=Copy(LocalIP,1,ai[3]-1);
BroadCastIP:=s+'.255';
end;
end;
end;procedure TMainForm.SendMsg(const IP, Msg: String);//这是利用udp向IP发送信息的过程。发广播的话,把BroadCastIP的值赋予IP
begin
MsgStream.Position:=0;//MsgStream定义如下:MsgStream: TMemoryStream;
MsgStream.Size:=0;
MsgStream.Write(Msg[1],Length(Msg));
NMUDP.RemoteHost:=IP;
NMUDP.SendStream(MsgStream);
end;有这两个函数,就可以发广播啦。
若用SendStream(),文件超过2k是就会溢出。
向大家请教,谢谢。
还有就是怎么不能给你加分了啊!