Announcement

Collapse
No announcement yet.

Finden von MySQL im Netzwerk

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Finden von MySQL im Netzwerk

    Mit folgender kleinen Routine finde ich alle MSSQL Server im Netzwerk. Diese melden sich mit ihrer Kennung in der CallBackRoutine.
    Der Thread ist nur um den Socket nach 3000 msec wieder zu vernichten.
    <PRE>
    procedure TwConfiguration.DataBaseConfigShow(Sender: TObject);
    const
    Address='255.255.255.255';
    var
    SNDBUF:Integer;
    TCPNODELAY:Integer;
    BROADCAST:integer;
    hostaddr: sockaddr_in;
    buf:char;
    node:TTreeNode;
    begin
    SQLServer.Items.Clear;
    node:=SQLServer.Items.Add(nil,'');
    node.ImageIndex:=24;
    node.SelectedIndex:=24;
    //create a socket
    DBSocket:=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
    //declare call back routine
    WSAAsyncSelect(DBSocket,self.Handle,CM_SocketCallB ack,FD_READ);
    //setup
    SNDBUF:=0;
    TCPNODELAY:=1;
    BROADCAST:=1;
    setsockopt(DBSocket,SOL_SOCKET,SO_SNDBUF,PChar(@SN DBUF),sizeof(SNDBUF));
    setsockopt(DBSocket,SOL_SOCKET,TCP_NODELAY,PChar(@ TCPNODELAY),sizeof(TCPNODELAY));
    setsockopt(DBSocket,SOL_SOCKET,SO_BROADCAST,PChar( @BROADCAST),sizeof(BROADCAST));
    hostaddr.sin_family :=AF_INET;
    hostaddr.sin_port :=htons(1434);
    hostaddr.sin_addr.s_addr:=inet_addr(PChar(Address) );
    buf:=#02; //ping
    //ask all maschines
    sendto(DBSocket,buf,1,0,hostaddr,sizeof(hostaddr)) ;
    TClearSocketThread.Create(DBSocket,3000);
    end;
    </PRE>
    Habe schon alles probiert um auch MySQL Server zu finden (Port 3306,IPPROTO_TCP oder IPPROTO_IP,..). Leider hatte ich bis jetzt keinen Erfolg. Kann mir jemand sagen wie es geht? (Mit Hyperterminal, der direkten IP:3306 bekomme ich Verbindung).
Working...
X