Ich bin dabei mit Lazarus ein MQTT Client zu schreiben und habe diesen Delphi Client gefunden und umgewandelt.
http://jamiei.com/blog/code/mqtt-client ... or-delphi/
Im Prinzip geht es, aber nur eine bestimmte Zeit lang, dann steigt ein Thread aus: TMQTTReadThread
Hier mal ein Ausschnitt aus dem Code:
Code: Alles auswählen
 
procedure TMQTTReadThread.Execute;
var
  CurrentMessage: TMQTTMessage;
  RLInt: Integer;
  Buffer: TBytes;
  i: integer;
begin
  while not Terminated do
    begin
      CurrentMessage.FixedHeader := 0;
      CurrentMessage.RL := nil;
      CurrentMessage.Data := nil;
      CurrentMessage.FixedHeader := FPSocket^.RecvByte(1000);
      // If we couldn't read from the socket try to read the rest of the message.
      if not ((FPSocket^.LastError <> 0) and (CurrentMessage.FixedHeader = 0)) then
        begin
          SetLength(CurrentMessage.RL, 1);
          SetLength(Buffer, 1);
          CurrentMessage.RL[0] := FPSocket^.RecvByte(1000);
          for i := 1 to 3 do
            begin
              if (( CurrentMessage.RL[i - 1] and 128) <> 0) then
              begin
                Buffer[0] := FPSocket^.RecvByte(1000);
                AppendBytes(CurrentMessage.RL, Buffer);
              end else Break;
            end;
 
          RLInt := RemainingLengthToInt(CurrentMessage.RL);
          if (RLInt > 0)  then
            begin
              SetLength(CurrentMessage.Data, RLInt);
              FPSocket^.RecvBufferEx(Pointer(CurrentMessage.Data), RLInt, 1000);
            end;
 
          if not (FPSocket^.LastError <> 0) then
            begin
              //ProcessCommand.
              FCurrentData := CurrentMessage;
              Synchronize(HandleData);
            end;
        end
        else
          if FPSocket^.LastError <> 110 then
            break;
 
   //   sleep(1);
    end;
  writeln('Fehler...', FPSocket^.LastErrorDesc);
end;
 
 Ich vermute der Sever beendet die Verbindung, aber warum? Was könnte der Grund sein?
Leider hat Google Chrome wieder den letzten Teil der Nachricht abgeschnitten, darum musste ich es noch mal machen.
 
 
 Verein
Verein 
 Links
Links Suche
Suche