AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi MS SQL Server mit alternativen Ports nutzen
Thema durchsuchen
Ansicht
Themen-Optionen

MS SQL Server mit alternativen Ports nutzen

Ein Thema von QuickAndDirty · begonnen am 12. Mär 2014 · letzter Beitrag vom 11. Apr 2014
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#11

AW: MS SQL Server mit alternativen Ports nutzen

  Alt 14. Mär 2014, 12:05
Moin moin,

deine Frage zu FireDAC speziell kann ich dir nicht beantworten. Wenn du den SQL-Server-Browser aber selbst abfragen musst, dann kannst du per UDP ein Byte ($02) an den Dienst senden und erhälst die Antwort. Hier ein simples Bsp:
Code:
function RawQueryMSServerBrowser(const PaStrServer: String): String;
var
   Client: TIdUDPClient;
begin
   Client := TIdUDPClient.Create(nil);
   try
      Client.Send(PaStrServer, 1434, #$02);
      Result := Client.ReceiveString(1000);
   finally
      Client.Free;
   end;
end;
Ab dem 4. Byte steht dann wohl ein reiner String in der Antwort. Was genau die ersten 3 Bytes der Antwort aussagen, kann ich dir nicht sagen. Eine Info/Doku/API dazu habe ich leider nicht finden können - ich hatte das einfach nur mal mit gesnifft.

Eventuell hilfts dir ja weiter...
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.926 Beiträge
 
Delphi 12 Athens
 
#12

AW: MS SQL Server mit alternativen Ports nutzen

  Alt 14. Mär 2014, 13:03
Moin moin,

deine Frage zu FireDAC speziell kann ich dir nicht beantworten. Wenn du den SQL-Server-Browser aber selbst abfragen musst, dann kannst du per UDP ein Byte ($02) an den Dienst senden und erhälst die Antwort. Hier ein simples Bsp:
Code:
function RawQueryMSServerBrowser(const PaStrServer: String): String;
var
   Client: TIdUDPClient;
begin
   Client := TIdUDPClient.Create(nil);
   try
      Client.Send(PaStrServer, 1434, #$02);
      Result := Client.ReceiveString(1000);
   finally
      Client.Free;
   end;
end;
Ab dem 4. Byte steht dann wohl ein reiner String in der Antwort. Was genau die ersten 3 Bytes der Antwort aussagen, kann ich dir nicht sagen. Eine Info/Doku/API dazu habe ich leider nicht finden können - ich hatte das einfach nur mal mit gesnifft.

Eventuell hilfts dir ja weiter...
NICE!!!!!!!!!!!!!!!!!

Danke!

Wenn es dir anders geht als mir. Du also mit Spezifikationen was anfangen kannst...tata
http://msdn.microsoft.com/en-us/libr...(PROT.10).aspx

Da ist sogar dein beispiel drin. und es geht auch als Broadcast.
cool.
http://msdn.microsoft.com/en-us/library/cc219743.aspx

Das macht quasi den weg frei, dafür dass man dem Admin einfach eine Liste gefundener Instanzen anbietet.
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (14. Mär 2014 um 13:22 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#13

AW: MS SQL Server mit alternativen Ports nutzen

  Alt 14. Mär 2014, 13:26
Danke für die Links. Mit diesen Infos kann man dann die Antwort ja korrekt auswerten. Wie findet ihr nur immer sowas - ich suche vermutlich generell mit den falschen Suchbegriffen ^^
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.926 Beiträge
 
Delphi 12 Athens
 
#14

AW: MS SQL Server mit alternativen Ports nutzen

  Alt 1. Apr 2014, 12:36
ok es bedarf scheinbar eines echten parsers
Die antwort besteht aus folgenden Produktionsregeln.
http://msdn.microsoft.com/en-us/library/cc219748.aspx


Außerdem... Wie empfange ich mit einem UDP Client korrect alle Antworten eines Broadcasts?
Ich empfange immer nur eine. Damit das funktioniert mache ich einfach gaaanz viele Broadcasts so dass verschiedene Server schneller sind.
Das kann doch nicht der weg sein wie man sowas machen muss.
Delphi-Quellcode:
procedure TMSSQLServerBrowserClient.Refresh;
var counter:Cardinal;
   Client: TIdUDPClient;
   sreceived:string;
begin
   FSQLServers.clear;

   Client := TIdUDPClient.Create(nil);
   try
    Client.Port := Port;
    Counter := getTickCount()+ 5000;
    while getTickCount() < counter do
    Begin
      Application.ProcessMessages;
      Client.Broadcast(CLNT_BCAST_EX,Port); // Client.Send(CLNT_UCAST_EX);
      sReceived := Client.ReceiveString(10000);
      Parse(sReceived);
    end;//while getTickCount() < counter do
   finally
      Client.Free;
   end;
End;
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty ( 1. Apr 2014 um 13:05 Uhr) Grund: Habe mich geirrt die Produktionsregeln sind vollständig!
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#15

AW: MS SQL Server mit alternativen Ports nutzen

  Alt 1. Apr 2014, 13:07
Eine Lösung für ActiveMQ Server habe ich neulich hier gepostet:

http://mikejustin.wordpress.com/2013...and-indy-10-6/

Eventuell hilft der Code weiter, leider habe ich kein MS SQL installiert
Michael Justin
  Mit Zitat antworten Zitat
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#16

AW: MS SQL Server mit alternativen Ports nutzen

  Alt 1. Apr 2014, 13:38
Moin moin,

... Wie empfange ich mit einem UDP Client korrect alle Antworten eines Broadcasts?...
Du brauchst mit dem Client doch nur einen Broadcast senden. Um die Antworten dann zu empfangen, kannst du doch einen Server auf dem Port lauschen lassen. Damit bekommst du dann wie gewollt die Antworten.
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.926 Beiträge
 
Delphi 12 Athens
 
#17

AW: MS SQL Server mit alternativen Ports nutzen

  Alt 1. Apr 2014, 15:14
Habe ich versucht!
Der Port 1434 ist belegt....von meinem eigenen SQL-Serverbrowser.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.926 Beiträge
 
Delphi 12 Athens
 
#18

AW: MS SQL Server mit alternativen Ports nutzen

  Alt 3. Apr 2014, 15:42
Also es fehlt mir wirklich, wie man vernünftig die anworten auf einen UDP Broadcast empfängt! Wenn es mehr als eine ist....
Hat einer ne Ahnung?
Spammen funktioniert zwar, aber das kann es doch nicht sein.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#19

AW: MS SQL Server mit alternativen Ports nutzen

  Alt 3. Apr 2014, 15:51
Also es fehlt mir wirklich, wie man vernünftig die anworten auf einen UDP Broadcast empfängt! Wenn es mehr als eine ist....
Hat einer ne Ahnung?
Siehe oben, den Quelltext hatte ich in meinem verlinkten Artikel auch komplett untergebracht, UDP Empfang auch mehrerer Antworten funktioniert problemlos. Doppelte Einträge werden ausgefiltert.
Michael Justin
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.926 Beiträge
 
Delphi 12 Athens
 
#20

AW: MS SQL Server mit alternativen Ports nutzen

  Alt 11. Apr 2014, 15:00
Also es fehlt mir wirklich, wie man vernünftig die anworten auf einen UDP Broadcast empfängt! Wenn es mehr als eine ist....
Hat einer ne Ahnung?
Siehe oben, den Quelltext hatte ich in meinem verlinkten Artikel auch komplett untergebracht, UDP Empfang auch mehrerer Antworten funktioniert problemlos. Doppelte Einträge werden ausgefiltert.
OK jetzt hab ichs kapiert...versuche es mal
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (11. Apr 2014 um 16:36 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz