quelltext einer internetseite in einen string laden

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag von bluejoke »

AND51 hat geschrieben:> Content-length wird ja auch nicht immer gesendet. Aber man kann ja die verschiedenen Maßnahmen kombinieren.
Ja, das denke ich auch. Ich sehe, wir beide nähern uns an. Weiter so! :allright:
Als 18jähriger sollte man doch langsam auch abweichende Meinungen ertragen können, oder? Aber schön, dass wir mal einig sind.
Ich würde mal wagen zu behaupten, dass man mit der Conent-Length-Methode und mit der NULL-Byte-Such-Methode schon genug Server abdeckt, die man korrekt behandeln kann.
Nein! Man muss immer davon ausgehen, dass dabei irgendwas schief geht. Du hast doch im anderen Thread mit der Begründung "mehr Sicherheit" dieses Max_Size dings gefordert, dann fordere ich jetzt genauso vehement ein zusätzliches Timeout, also bitte auch überprüfen ob ihr schon Ewigkeiten lauscht und nix kommt...
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
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 »

Da das obige Beispiel nicht wirklich anfängertauglich ist (da jede Menge Fallen), hier mal ein praktikableres Beispiel mit einem Fenster (ich weiss, Fenster ist nicht gefordert, dient nur der besseren Darstellung):

Code: Alles auswählen

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

Define.s URL, Path, Send, Receive
Define.l Port, CID, Wait, TimeOUT.l

URL  = "www.purebasic.fr"
Path = "/german/viewforum.php?f=16"
Port = 80
CID  = OpenNetworkConnection(URL, 80)
If CID = 0
	MessageRequester("Error", "Can't reach " + URL)
	End
EndIf

Send = "GET /"+ Path + "/ HTTP/1.1"          + #CRLF$
Send + "Host: "+ URL                         + #CRLF$
Send + "Connection: close"                   + #CRLF$
Send + "Accept: text/plain"                  + #CRLF$
Send + "Accept-Charset: ISO-8859-1, *;q=0.7" + #CRLF$
Send + "User-Agent: Simple Test"             + #CRLF$
Send + "Referrer: www.womba.net"             + #CRLF$ + #CRLF$
SendNetworkString(CID, Send) 

*Buffer = AllocateMemory(1024)

If OpenWindow(0, 400, 52, 513, 326, "Test", #PB_Window_SystemMenu | #PB_Window_TitleBar) = 0 Or CreateGadgetList(WindowID(0)) = 0
	End
EndIf
EditorGadget(0, 5, 5, 495, 310, #PB_Editor_ReadOnly)

TimeOUT = ElapsedMilliseconds() + 2000
Wait    = 100
Repeat
	Select WaitWindowEvent(Wait)
		Case 0
			If CID
				Select NetworkClientEvent(CID)
					Case #PB_NetworkEvent_Data
						Wait = 0
						L = ReceiveNetworkData(CID, *Buffer, 1024)
						If L
							Receive + PeekS(*Buffer, L)
							TimeOUT = ElapsedMilliseconds() + 50
						EndIf   
					Default
						Wait = 5
				EndSelect
			EndIf
			If CID And TimeOUT < ElapsedMilliseconds()
				If Right(Receive, 5) = "0" + #CRLF$ + #CRLF$
					SetGadgetText(0, Receive)
					CloseNetworkConnection(CID)
					CID = 0
					Wait = -1
				EndIf
			EndIf
		Case #PB_Event_CloseWindow
			Break
	EndSelect
ForEver
Antworten