LiveUpdate

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

ja schön wenn ich in der Help was gefunden hätte
Zu solchen Funktionen findet man auch nichts in dieser Help da sie Windows-Api sind! (Erkennbar an dem "_" am Ende der Funktion)
Bei sowas muss man in ner Api-Help suchen. Diese Befehle tun auch nur unter Windows!
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Konne hat geschrieben:Nehm doch "einfach" die FTP Commands.
Und gabs da nicht auch die Möglichkeit von jedem Teil dass du Updaten willst immer nen Hash zu machen und mit den Serverdaten zu vergleichen. Wenn sie unterschiedlich sind muss der eine Programmteil Upgedatet werden.
Sofern da ein gescheiter HTTP Server läuft, sollte es auch möglich sein
über den HTTP Header eine MD5 Hash Anfrage zu senden.
Bild
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

Konne hat geschrieben:
ja schön wenn ich in der Help was gefunden hätte
Zu solchen Funktionen findet man auch nichts in dieser Help da sie Windows-Api sind! (Erkennbar an dem "_" am Ende der Funktion)
Bei sowas muss man in ner Api-Help suchen. Diese Befehle tun auch nur unter Windows!
Ich seh schon ein Posting:
DAU hat geschrieben:Neuer Bug in der Linux-Version PB!
Hi, ich hab grad rausgefunden, dass URLDownloadToFile_() mit der Linux-Version von PB nicht funktioniert!

EDIT: Ich hab grad unter MacOS mal getestet, da funktioniert der Befehl auch nicht!:evil:
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Code: Alles auswählen

Procedure.l HTTPRequest(URL.s, *EndSize.LONG, PacketSize)
  If Left(URL, 7) = "http://" : URL = Right(URL, Len(URL)-7) : EndIf
  s = FindString(URL, "/", 1)
  Host.s = "" : File.s = ""
  If s <> 0 : Host.s = Left(URL, s-1) : File.s = Right(URL, Len(URL)-s) : Else : Host = URL : EndIf
  
  ConnectionID = OpenNetworkConnection(Host, 80)
  If ConnectionID
    Data_.s = "GET /"+File+" HTTP/1.0"+#CRLF$
    Data_.s + "Host: "+Host+#CRLF$
    Data_.s + "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7"+#CRLF$
    Data_.s + "Connection: close"+#CRLF$+#CRLF$
    
    Text.s = ""
    
    SendNetworkString(ConnectionID, Data_)
    While NetworkClientEvent(ConnectionID) <> 2 : Delay(10) : Wend
    
    *Buffer = AllocateMemory(PacketSize)
    Size = ReceiveNetworkData(ConnectionID, *Buffer, PacketSize)
    Text.s = PeekS(*Buffer, Size)
    s = FindString(Text, "Content-Length:", 1)
    If s <> 0
      ;Cut the Header
      Length = Val(Trim(StringField(Mid(Text, s, FindString(Text, #CR$, s+5)), 2, ":")))-1
      
      ;Read the data
      s = FindString(Text, #CRLF$+#CRLF$, 1)+3
      
      Size = (PacketSize-s)
      *Result = AllocateMemory(Length)
      CopyMemory(*Buffer+s, *Result, Size)
      
      If Size < Length
        
        CurSize = ReceiveNetworkData(ConnectionID, *Buffer, PacketSize)
        While Size < Length
          If CurSize > 0
            oSize = Size
            Size + CurSize
            CopyMemory(*Buffer, *Result+oSize, CurSize)
          EndIf
          CurSize = ReceiveNetworkData(ConnectionID, *Buffer, PacketSize)
        Wend
        
      EndIf
    EndIf
    If *Buffer
      FreeMemory(*Buffer)
    EndIf
    
    CloseNetworkConnection(ConnectionID)
    
    *EndSize\l = Size
    ProcedureReturn *Result
  EndIf
EndProcedure

Procedure DownloadToFile(URL.s, Filename.s)
  File = CreateFile(#PB_Any, Filename)
  If File
    *Buffer = HTTPRequest(URL.s, @Size, 256)
    If *Buffer
      WriteData(*Buffer, Size)
      CloseFile(File)
      FreeMemory(*Buffer)
      ProcedureReturn 1
    EndIf
  EndIf
EndProcedure
Noch etwas umändern und man kann auch Daten senden.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Programie
Beiträge: 1280
Registriert: 06.08.2005 22:56
Computerausstattung: https://www.sysprofile.de/id160800
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von Programie »

Bei funzt der Code nicht, der Dabei ist. Ich habe die Library in den Ordner Userlibrary kopiert und den Code extrahiert. :evil:
BildBildBildBild
Antworten