Aktuelle Zeit: 10.07.2020 17:15

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags: Re: PDF mit Base64Encoder versenden
BeitragVerfasst: 07.07.2019 12:16 
Offline
Benutzeravatar

Registriert: 24.11.2004 13:12
Wohnort: Germany
Obwohl bei meinen Modul NetworkTCP für das Netzwerk und der CPU die Parameter Ressourcen schonend eingestellt ist, übertrage ich 1 Megabyte unter 10 Sekunden im lokalen Netzwerk.
Die Grundeinstellung sind für die Nutzdaten 4096 Byte pro Block und eine Delay Blockzeit von 20 ms.

Da muss bei deinen Test ein Fehler passiert sein.

_________________
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul / OPC-Helper DLL
PB v3.30 / v5.4x - OS Mac Mini OSX 10.xx / Window 10 Pro. (X64) /Window 7 Pro. (X64) / Window XP Pro. (X86) / Ubuntu 14.04
Downloads auf My Webspace


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PDF mit Base64Encoder versenden
BeitragVerfasst: 07.07.2019 21:06 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
Ich denke auch, dass da dann ein Fehler im Code war. Denn 2,5 MB sind ja im Grunde nichts. Im lokalen Netzwerk mit 1 GBit/s sind 2,5MB in aufgerundet 20 ms versendet.

_________________
Ubuntu Gnome 20.04 LTS x64, PureBasic 5.72 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50, 5.60, 5.71b2)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PDF mit Base64Encoder versenden
BeitragVerfasst: 08.07.2019 09:20 
Offline

Registriert: 19.10.2014 15:51
Hm, ich weiss zwar nicht, wie sich da ein Fehler einschleichen soll, wenn ich doch genau den Code benutze und nichts verändert habe, aber schon klar, natürlich ist immer der Anwender Schuld.
Hilft mir übrigens bei meiner Ursprungsfrage nicht wirklich weiter.

_________________
Ich programmiere plattformunabhängig und suche immer Lösungen für alle Plattformen.
Win 7/10, Linux Mint Cindy 3 (Debian), Mint 18.3 / 19.1


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PDF mit Base64Encoder versenden
BeitragVerfasst: 08.07.2019 10:57 
Offline
Ein Admin
Benutzeravatar

Registriert: 29.08.2004 20:20
Wohnort: Saarbrücken
Uns hilft es auch nicht weiter, wenn du glaubst im Recht zu sein und uns nicht den Code zeigst, der nicht funktioniert. Dir sollte klar sein, dass 2,5 MB im Bruchteil einer Sekunde übertragen werden sollte. Und mit simplen Netzwerkbefehlen ist das auch so. Das mache ich öfter so und erreiche viele Megabytes pro Sekunde.

Also zeig doch mal, was du bisher gemacht hast, damit wir das auch nachvollziehen können. Sich blind gegenseitig die Schuld in die Schuhe zu schieben, hilft keinem weiter.

Ist das Base64-Problem mit meiner Antwort nun eigentlich gelöst oder geht das noch nicht?

_________________
Ubuntu Gnome 20.04 LTS x64, PureBasic 5.72 x64 (außerdem 4.41, 4.50, 4.61, 5.00, 5.10, 5.11, 5.21, 5.22, 5.30, 5.31, 5.40, 5.50, 5.60, 5.71b2)
"Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen – Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PDF mit Base64Encoder versenden
BeitragVerfasst: 09.07.2019 08:21 
Offline

Registriert: 19.10.2014 15:51
Beim TCP benutze ich diesen Code: viewtopic.php?f=8&t=31321
Ohne Veränderung. Deshalb weiss ich nicht, wo ICH da einen Fehler machen soll.

Tja, ich verzweifle manchmal in diesem Forum, da ich nicht verstehe was ihr nun von mir wollt.
Den Code habe ich bereits ganz am Anfang gepostet. Und dieser funktioniert halt nicht.

Ich weiss nicht, wie ich den empfangegen Datenstring dann wieder in eine PDF umwandeln kann.

Der Client arbeitet mit WEBSOCKETS, deshalb benötige ich - zumindest ist das mein Wissenstand - Base64, um die PDF-Datei zu empfangen.
Aber ich lasse mich sehr gerne mit einem leicht verständlichen BEISPIEL eines Besseren belehren.

_________________
Ich programmiere plattformunabhängig und suche immer Lösungen für alle Plattformen.
Win 7/10, Linux Mint Cindy 3 (Debian), Mint 18.3 / 19.1


Zuletzt geändert von stevie1401 am 10.07.2019 08:41, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PDF mit Base64Encoder versenden
BeitragVerfasst: 09.07.2019 09:54 
Offline
Benutzeravatar

Registriert: 25.09.2016 01:42
Hier mal Code der eine Datei in Base64 umwandelt.

Code:
Code:
EnableExplicit

;FileBase64
;Author: Mijikai

Global base64.i

Procedure.i FileBase64(File.s)
  Protected handle.i
  Protected *src
  Protected *con.Integer
  Protected src_siz.i
  Protected con_siz.i
  If File
    handle = ReadFile(#PB_Any,File)
    If IsFile(handle)
      src_siz = Lof(handle)
      *src = AllocateMemory(src_siz)
      If *src
        If ReadData(handle,*src,src_siz) = src_siz
          con_siz = (src_siz << 1) + SizeOf(Integer)
          *con = AllocateMemory(con_siz)
          If *con
            *con\i = Base64EncoderBuffer(*src,src_siz,*con + SizeOf(Integer),con_siz)
            If Not *con\i
              FreeMemory(*con)
              *con = #Null
            EndIf
          EndIf
        EndIf
        FreeMemory(*src)
      EndIf
      CloseFile(handle)
    EndIf
  EndIf
  ProcedureReturn *con
EndProcedure

Procedure.i FileBase64Size(*base64.Integer)
  If *base64
    ProcedureReturn *base64\i
  EndIf
  ProcedureReturn #Null
EndProcedure

Procedure.i FileBase64Buffer(*base64)
  If *base64
    ProcedureReturn *base64 + SizeOf(Integer)
  EndIf
  ProcedureReturn #Null
EndProcedure

Procedure.i FileBase64Free(*base64)
  If *base64
    FreeMemory(*base64)
  EndIf
  ProcedureReturn #Null
EndProcedure

base64 = FileBase64("TestFile.bin")

ShowMemoryViewer(FileBase64Buffer(base64),FileBase64Size(base64))

End


_________________

Links:
PureBasic Discord
[INCLUDE] GLFW 3.3 Library
[MODULE] Bass Library 2.4 (Win)
[LIBRARY] Hexi Binary2Hex (Win)



Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PDF mit Base64Encoder versenden
BeitragVerfasst: 09.07.2019 10:10 
Offline
Benutzeravatar

Registriert: 08.09.2004 08:53
@Stevie: was du machen willst ist ein PDF Download und Ansicht im Browser, oder?

Wenn du das mit WebSocket machst, ist das unnötig kompliziert.

Clientseitig (SpiderBasic) kannst du eine Datei Downloaden mittels JavaScript window.open()

Code:
; SpiderBasic
Procedure Download(Filename.s, Parameter.s = "")
  !  if (v_parameter != "") {
  !    var win = window.open(v_filename, v_parameter);
  !    win.focus();
  !  } else {
  !    window.open(v_filename);
  !  }
EndProcedure

Download ("https://buildmedia.readthedocs.org/media/pdf/django-leaflet/latest/django-leaflet.pdf")


Für den Server würde ich dir von PB abraten. Nimm lieber ein Freeware Apache Projekt oder Nginx.
Die sind viel schneller und robuster..

Ciao Dige

_________________
"Papa, mein Wecker funktioniert nicht! Der weckert immer zu früh."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PDF mit Base64Encoder versenden
BeitragVerfasst: 10.07.2019 09:02 
Offline

Registriert: 19.10.2014 15:51
Vielen Dank für eure Hilfe! :)
Leider wird aus vielerlei Gründen mein Knowhow nicht über Spider- und Purebasic hinaus gehen können, deshalb suche ich halt nach Lösungen auf dieser Ebene, wohl wissend, dass ich da keine "Wunder" erwarten kann.

_________________
Ich programmiere plattformunabhängig und suche immer Lösungen für alle Plattformen.
Win 7/10, Linux Mint Cindy 3 (Debian), Mint 18.3 / 19.1


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: PDF mit Base64Encoder versenden
BeitragVerfasst: 10.07.2019 09:37 
Offline
Benutzeravatar

Registriert: 08.03.2013 14:27
Wohnort: ERB
Naja Spiderbasic setzt in der Regel sowieso einen Web-Server vorraus. Spiderbasic ist ja dazu da, RIA's (Rich Internet Applications) zu realisieren. Ein Webserver sollte also in der Regel sowieso da sein. Wenn du hingegen zum Beispiel eine lokale Desktop-Anwendung realisieren möchtest und über das PBEx Webgadget anzeigen willst, solltest du einen Webserver in die Anwendung integrieren. Und das aus folgenden Gründen:

1. Viele Javascript Netzwerk-Geschichten erfordern die Einhaltung der Origin-Richtlinien. Javascript setzt daher vorraus, das eine IP/Domain die Anwendung ausliefert.
2. Der Websocket ist nicht dazu gedacht, Dateien zu übertragen. Denn Javascript kann über den Browser nur eingeschränkt auf das Dateisystem zugreifen, wodurch du Probleme beim Speichern der Datei bekommen wirst.
3. Kann ein Webserver die Dateien super einfach ausliefern, weil genau das seine Hauptaufgabe ist.

Wenn du also eine Purebasic-Anwendung als Server verwenden willst, ist das erst einmal kein Problem. Du kannst ja trotzdem über Socket mit dem Client arbeiten. Aber das Übertragen von Dateien sollte man einem Webserver überlassen, da der Browser die Dateien so verarbeitet, wie er es verarbeiten soll.

Wenn die Anwendung im Intranet laufen soll (nicht über das Internet erreichbar), dann reicht ein einfacher Webserver problemlos aus. Suche hier nach nanoHTTP. Das ist mein Webserver zum einbinden in die eigene Purebasic-Anwendung. Im Internet empfehle ich hingegen einen etablierten Webserver, den du entweder als Reverse-Proxy vor nanoHTTP setzt (wegen Verschlüsselung etc.) oder nanoHTTP weglässt und ihn die Daten ausliefern lässt.

_________________
USAC Protokoll
Universal Stringbased Application Communication Protocoll

Github: Zum Spezifikationdokument v0.01


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ]  Gehe zu Seite Vorherige  1, 2

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 14 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye