warum keine NetWorkConnection ?

Anfängerfragen zum Programmieren mit PureBasic.
Justin
Beiträge: 167
Registriert: 09.09.2008 16:46

warum keine NetWorkConnection ?

Beitrag von Justin »

Hallo zusammen,

habe gerade folgendes ausprobiert:

Code: Alles auswählen

If InitNetwork() = 0
  MessageRequester("Fehler","Netzwerk konte nicht initialisiert werden")
EndIf

NetID = OpenNetworkConnection("http://www.google.de", 80)
If NetID
  
Else
  MessageRequester("Fehler","Verbindung konnte nicht hergestellt werden " )
  End
EndIf
Leider wird die Verbindung nicht hergestellt - warum?

Gruß
Justin

Windows Vista Ultimate x64
PB 4.40 B2 x64
PB 5.11 x64 / Kubuntu 12.10 x64 | Windows 7 x64
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

Bei mir läufts, bekomme kein fehler, aber das http:// kannst du auch weglassen.!

Liegt also vermutlich an deinem PC/ deiner Internetverbindung
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Justin
Beiträge: 167
Registriert: 09.09.2008 16:46

Beitrag von Justin »

is ja n Ding, wenn ich "http://" weg lasse geht es... SEHR fraglich!

Hast du die gleiche PB Version wie ich?
PB 5.11 x64 / Kubuntu 12.10 x64 | Windows 7 x64
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

STARGÅTE hat geschrieben:Bei mir läufts, bekomme kein fehler, aber das http:// kannst du auch weglassen.!

Liegt also vermutlich an deinem PC/ deiner Internetverbindung
das http:// muß sogar weggelassen werden, zumindest mit PB4.40 b2
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Justin
Beiträge: 167
Registriert: 09.09.2008 16:46

Beitrag von Justin »

wie ist das zu verstehen - "zumindest bei PB 4.4" ?
PB 5.11 x64 / Kubuntu 12.10 x64 | Windows 7 x64
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Justin hat geschrieben:wie ist das zu verstehen - "zumindest bei PB 4.4" ?
Hab nichts anderes zum Testen installiert, da es bei STARGÅTE anscheinend
auch mit http:// geht nehme ich mal an, es betrifft nicht alle Versionen von PB.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

Beitrag von TomS »

Wenn ältere Versionen das unterstützen, ist es ein unnötiges Feature.
http:// gibt ein Protokoll an und hat nichts in einer Server-Adresse zu suchen.
Justin
Beiträge: 167
Registriert: 09.09.2008 16:46

Beitrag von Justin »

@TomS
ja ok, hört sich logisch an .

Ich werde euch mal weiter langweilen :) :
Nachdem das also jetzt funktioniert wollte ich weiter experimentieren und bin darauf gekommen, mal eine Datei von Rapidshare zu laden, ohne ReceiveHTTPFile() zu verwenden - ich will nicht umständlich die Daten speichern und dann wieder laden müssen, ist zwar für einen Dateidownload in dieser Art nicht besonders sinnvoll, aber einfach mal so als Übung. Ich speichere die Daten auch nur, um sie geschwint im Browser anzeigen zu lassen.

Ich habe mir also folgenden Code geschrieben:

Code: Alles auswählen

If InitNetwork() = 0
  MessageRequester("Fehler","Das Netzwerk konnte nicht initialisiert werden")
  End
EndIf

NetID = OpenNetworkConnection("rapidshare.com", 80) 
If NetID = 0  
  MessageRequester("Fehler","Verbindung konnte nicht hergestellt werden")
  End
EndIf

Header.s = "GET /files/275488183/MP_VP.rar HTTP/1.1" + #CRLF$
Header   + "Host: rapidshare.com" + #CRLF$
Header   + #CRLF$

SendNetworkString(NetID, Header)
Repeat: Until NetworkClientEvent(NetID) = #PB_NetworkEvent_Data

*buffer = AllocateMemory(83290)
ReceiveNetworkData(NetId, *buffer, MemorySize(*buffer))

If CreateFile(0, "c:\a.html")
  WriteData(0, *buffer, MemorySize(*buffer))
  CloseFile(0)
Else
  MessageRequester("Fehler","Datei konnte nicht geschrieben werden")
EndIf
Leider kommen da nicht alle Daten bei rüber - der Header sollte aber stimmen ?

Mal zum Vergleich sollte folgendes übertragen werden (die Site zur auswahl ob man Free- oder Premiumuser ist):
http://rapidshare.com/files/275488183/MP_VP.rar

Wo kommt das her, denn der Buffer ist jetzt mal frei Schnauze extra groß erstellt ?
PB 5.11 x64 / Kubuntu 12.10 x64 | Windows 7 x64
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Justin hat geschrieben:is ja n Ding, wenn ich "http://" weg lasse geht es... SEHR fraglich!
Nö, nicht fraglich.

Liegt einfach daran, dass http:// kein Bestandteil der Domain bzw. des Servernamen ist. Und wenn du die Beschreibung zu dem Befehl ansiehst, stellst du fest, dass dieser Befehl nur den Servernamen erwartet.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Justin hat geschrieben: Wo kommt das her, denn der Buffer ist jetzt mal frei Schnauze extra groß erstellt ?
TCP/IP versendet immer Häppchenweise, wobei du nie sicher sein kannst, wie groß denn nun das nächste Häppchen ist.
Also in einem Aufwasch bekommst du evtl. sehr kleine Dateien runter (aber das ist auch nie sicher), aber keine größeren.

Tja, sooo einfach ist die ganze Netzwerkgeschichte nun wirklich nicht...
Antworten