最好能有例子啊,接收端与发送端都有的
发我邮箱谢谢
[email protected]

解决方案 »

  1.   

    ///接收数据
    procedure ReadData(var Message: TMessage); message WM_SOCK;
    var
      buffer: Array [1..4096] of char;
      len: integer;
      flen: integer;
      Event: word;
      value: string;
    begin
      flen:=sizeof(FSockAddrIn);
      Event := WSAGetSelectEvent(Message.LParam);
      if Event = FD_READ then
      begin
          len := recvfrom(s, buffer, sizeof(buffer), 0, FSockAddrIn, flen);
          value := copy(buffer, 1, len);
          Memo1.Lines.add(value)
      end;
    end;///发送数据
    procedure Tfrmmain.SendData(Content: String);
    var
      value{,hostname}: string;
      len: integer;
    begin
      //FSockAddrIn.SIn_Addr.S_addr := INADDR_BROADCAST;
      FSockAddrIn.SIn_Addr.S_addr := inet_addr(pchar(MY_GROUP));
      value := Content;
      len := sendto(s, value[1], Length(value), 0, FSockAddrIn, sizeof(FSockAddrIn));
      if (WSAGetLastError() <> WSAEWOULDBLOCK) and (WSAGetLastError() <> 0) then
        showmessage(inttostr(WSAGetLastError()));
      if len = SOCKET_ERROR then
        showmessage('send fail');
      if len <> Length(value) then
        showmessage('Not Send all');
    end;
      

  2.   

    组播有专门的 ip 地址段,发出的数据由底层的网络协议栈或者路由器去完成转发。windows 有一组api就是用于组播网络的,我只有vc的源码。
      

  3.   

    使用idudpserver绑定一个端口
    使用idudpclient的Broadcast发送