Es ist definitiv nicht wie Radfahren. Man kann es wieder verlernen !
Nein, bitte kein Mitleid. Altersdemenz hat auch Vorteile :
Ich lerne täglich neue Leute kennen und werde mich unvorbelastet in Version 4.0 einarbeiten.
Jetzt aber ernsthaft. Ich habe mir Teile aus dem Forum und der Hilfe zu einem TestClient zusammengebastelt.
Er läuft zwar. Ist aber an zwei Stellen, die ich markiert habe, noch unschön :
1. Bei großen Antworten wird nur ein Teil empfangen
- edit :
- Eine Antwort sehe ich nur, wenn ich meinen lokalen Webserver anspreche.
- Im Web kommt zwar keine Fehlermeldung, aber die Antwort ist leer.
2. Das Kopieren der Antwort in die Zwischenablage führt manchmal zu "Invalid memory access".
- edit : ERLEDIGT
- Das Problem lag wohl nicht an GetGadgetText(), sondern an den API-Aufrufen.
- Keine Ahnung weshalb ich nicht gleich die PureBasic-Funktion benutzt habe.
- So gehts :
Code: Alles auswählen
If EventGadgetID()=7
Inhalt$=GetGadgetText(6)
SetClipboardText(Inhalt$)
EndIf
Ich bin für jeden Tipp dankbar !!!
Code: Alles auswählen
OpenWindow(0, 0, 0, 300, 400, #PB_Window_SystemMenu|#PB_Window_ScreenCentered, "TestClient")
If CreateMenu(0, WindowID())
MenuTitle("Info")
MenuItem(1, "About")
EndIf
CreateGadgetList(WindowID())
IPAddressGadget(0, 5, 5, 145, 20)
StringGadget(1, 215, 5, 20, 20, "80")
ButtonGadget(2, 25, 30, 100, 20, "Verbinden")
ButtonGadget(3, 175, 30, 100, 20, "Senden")
EditorGadget(4, 5, 55, 290, 290, "")
TextGadget(5, 5, 350, 290, 45, "Bitte IP oder Port ggf. ändern und "+Chr(34)+"Verbinden"+Chr(34)+" drücken.",#PB_Text_Border )
EditorGadget(6, 5, 55, 290, 290, "")
ButtonGadget(7, 175, 30, 100, 20, "Kopieren")
HideGadget(6, 1)
HideGadget(7, 1)
SetGadgetState(0,MakeIPAddress(127,0,0,1))
SetGadgetText(4,"GET /isapi.htm HTTP/1.1"+Chr(13)+Chr(10)+"Request Method: GET"+Chr(13)+Chr(10)+"Request URI: /isapi.htm"+Chr(13)+Chr(10)+"Request Version: HTTP/1.1"+Chr(13)+Chr(10)+"Host: 192.168.2.2"+Chr(13)+Chr(10)+"User-Agent: Mozilla/5.0 (Windows; U; Win98; de-DE; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1"+Chr(13)+Chr(10)+"Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1"+Chr(13)+Chr(10)+"Accept-Language: de-DE,de;q=0.8,en-us;q=0.5,en;q=0.3"+Chr(13)+Chr(10)+"Accept-Encoding: gzip,deflate"+Chr(13)+Chr(10)+"Accept-Charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7"+Chr(13)+Chr(10)+"Keep-Alive: 300"+Chr(13)+Chr(10)+"Connection: keep-alive"+Chr(13)+Chr(10)+Chr(13)+Chr(10))
DisableGadget(3, 1)
DisableGadget(4, 1)
;#Puffergroesse = 10485576
;#Puffergroesse = 16384
#Puffergroesse = 32768
Puffer=AllocateMemory(#Puffergroesse)
If InitNetwork()=0
MessageRequester("Fehler", "Kein Netzwerk gefunden.", 0)
EndIf
AddKeyboardShortcut(0, #PB_Shortcut_F1, 1)
DetachMenu()
Repeat
EventID=WaitWindowEvent()
If EventID=#PB_Event_Menu
If EventMenuID()=1
MessageRequester("Info","TestClient von Uwe Beisler",0)
EndIf
EndIf
If EventID=#PB_Event_Gadget
If EventGadgetID()=2 ;Verbinden
DisableGadget(3, 1)
DisableGadget(4, 1)
SetGadgetText(5,"Versuche Server zu erreichen.")
Host$=GetGadgetText(0)
Port$=GetGadgetText(1)
ConnectionID.l = OpenNetworkConnection(Host$,Val(Port$))
If ConnectionID = 0
SetGadgetText(5,"Server ist nicht erreichbar."+Chr(13)+Chr(10)+"Bitte IP oder Port neu eingeben und "+Chr(34)+"Verbinden"+Chr(34)+" drücken.")
Else
SetGadgetText(5,"Server ist erreichbar."+Chr(13)+Chr(10)+"Bitte Anfrage ggf. ändern und "+Chr(34)+"Senden"+Chr(34)+" drücken.")
HideGadget(6, 1)
HideGadget(7, 1)
DisableGadget(3, 0)
DisableGadget(4, 0)
EndIf
EndIf
If EventGadgetID()=3 ;Senden
SetGadgetText(0,Host$)
SetGadgetText(1,Port$)
Anfrage$ = GetGadgetText(4)
SendNetworkData(ConnectionID, @Anfrage$, Len(Anfrage$))
Antwort$=""
;******* 1. Problem
Repeat
Delay(10)
If NetworkClientEvent(ConnectionID)=2
Laenge = ReceiveNetworkData(ConnectionID,Puffer,#Puffergroesse)
Antwort$=Antwort$+PeekS(Puffer)
ElseIf NetworkClientEvent(ConnectionID)=3
ReceiveNetworkFile(ConnectionID,Antwort$)
Laenge = 0
EndIf
Until Laenge<>#Puffergroesse
;*******
SetGadgetText(6,Antwort$)
HideGadget(6, 0)
HideGadget(7, 0)
DisableGadget(3, 1)
DisableGadget(4, 1)
SetGadgetText(5,"Antwort erhalten."+Chr(13)+Chr(10)+"Bitte Antwort ggf. ändern und "+Chr(34)+"Kopieren"+Chr(34)+" drücken, oder IP bzw. Port ggf. ändern und "+Chr(34)+"Verbinden"+Chr(34)+" drücken.")
CloseNetworkConnection(ConnectionID)
EndIf
If EventGadgetID()=7
;CF_OEMTEXT
;CF_TEXT
If OpenClipboard_(0)
EmptyClipboard_()
;******* 2. Problem
Inhalt$=GetGadgetText(6)
;*******
SetClipboardData_(#CF_OEMTEXT,Inhalt$)
CloseClipboard_()
EndIf
EndIf
EndIf
If EventID = #PB_EventCloseWindow
Exit=1
FreeMemory(Puffer)
EndIf
Until Exit=1
End