http://www.delphibbs.com/delphibbs/dispq.asp?lid=1605817
三:网络数据广播
首先要指出的是,广播是只有UDP协议才支持的,TCP是无法进行广播的.广播分为两种,一种是directed broadcast.<<谈Delphi编程中“流”的应用>>实际应用之三:利用流制作自己的OICQ中已经说的很详细了,下面摘录下来给大家:UDP协议还有一个很大的好处就是可以广播,就是说处于一个网段的都可以接收到信息而不必指定具体的IP地址。网段一般分A、B、C三类,
1~126.XXX.XXX.XXX (A类网) :广播地址为XXX.255.255.255
128~191.XXX.XXX.XXX(B类网):广播地址为XXX.XXX.255.255
192~254.XXX.XXX.XXX(C类网):广播地址为XXX.XXX.XXX.255
比如说三台计算机192.168.0.1、192.168.0.10、192.168.0.18,发送信息时只要指定IP地址为192.168.0.255就可以实现广播了。下面给出一个转换IP为广播IP的函数,快拿去完善自己的OICQ吧^-^.
Function Trun_ip(S:string):string;
var s1,s2,s3,ss,sss,Head:string;
n,m:integer;
begin
sss:=S;
n:=pos('.',s);
s1:=copy(s,1,n);
m:=length(s1);
delete(s,1,m);
Head:=copy(s1,1,(length(s1)-1));
n:=pos('.',s);
s2:=copy(s,1,n);
m:=length(s2);
delete(s,1,m);
n:=pos('.',s);
s3:=copy(s,1,n);
m:=length(s3);
delete(s,1,m);
ss:=sss;
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;
end;
另外一种是limited broadcast,广播地址是255.255.255.255.它的好处是只要在同一子网中的主机,就可以收到这种广播,而不必非要在统一逻辑子网中.例如,如果你的地址是192.168.0.1,那么这种广播,地址是192.202.30.17的主机也能收到.本文将使用此种广播.
在Delphi中使用UDP广播可以用控件,也可以API.本文中将完全使用API来实现.