在VB中可以用WINSOCK1。ROMOHOST:=255。25。255。255,
在DELPHI中这样用出错,请问如何向局哉网中所有的人发个消息,我用的是NMUDP控件,
如何发广播地址?
在线等!

解决方案 »

  1.   

    你指定的IP不行,在Delphi中"255.255.255.255"是非法的。
    另外注意你的子网掩码,我不知道你要给那个网段发消息。
      

  2.   

    比如说你的IP地址是:168.0.0.5,那么你所在的局哉网的发广播地址是:168。0。0。255
    所以用NMUDP发消,只要将nmudp的地址写成广播地址就可以啦
      

  3.   

    哪位好心的大侠能帖一个有关NMUDP的例子呀
    email [email protected]
      

  4.   

    用IdUDPClient组件吧,简单,设置一个BroadcastEnabled为true即可。
      

  5.   

    for i:= 1 to 254 do
    begin
        udp.ROMOHOST:= IntTostr(i)+ '.255.255.255';
        udp.SenfBuf('');
    end;
      

  6.   

    从大富翁上看到的,应该可以!    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.255end;
        使用这个函数时只要把一个有效的IP地址送进去,就会返回该IP地址的广播地址。如Trun_ip(192.168.0.45)就会返回192.168.0.255.
      

  7.   

    udp控件有函数Broadcast
    直接广播就行了
      

  8.   

    我试了不过我在其中输入
    Trun_ip(192.168.0.3)提示错误信息:
    undeclare indetifile trun_ip,如能解决高分相送!!
      

  9.   

    使用控件TidUDPClient或TidUDPServer
    IdUDPClient1.Broadcast('message',8888);
    就可以发广播啊,很简单啊
      

  10.   

    参数sIPAddr为自己的IP地址,返回该网段的广播地址function TGbnSock.GetCBIP(sIPAddr : string):string;
    var
      i, j, iHead : Integer;
      sHead, s : string;
      ai : array[1..3] of integer;
    begin
    { 1~126.255.255.255 (A类网广播地址)
    128~191.XXX.255.255 (B类网广播地址)
    192~254.XXX.XXX.255 (C类网广播地址)}
      j := 1;
      for i := 0 to Length(sIPAddr) do
      begin
        if sIPAddr[i] = '.' then
        begin
          ai[j] := i;
          Inc(j);
        end;
        if j > 3 then break;
      end;
      sHead := Copy(sIPAddr, 1, ai[1] - 1);
      iHead := StrToInt(sHead);
      if iHead < 128 then //A类网
      begin
        Result := sHead + '.255.255.255';
      end
      else
      begin
        if iHead < 192 then //B类网
        begin
          s := Copy(sIPAddr, 1, ai[2] - 1);
          Result := s + '.255.255';
        end
        else //C类网
        begin
          s := Copy(sIPAddr, 1, ai[3] - 1);
          Result := s + '.255';
        end;
      end;
    end;
      

  11.   

    老大应该是Trun_ip('192.168.0.3');
    Function Trun_ip(S:string):string; 
    s是字符串
      

  12.   

    对不起,是我写错了,Trun_ip(192.168.0.45)应该是Trun_ip('192.168.0.45');罪过罪过,
    实在对不起!