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;