mirror of
https://github.com/QB64-Phoenix-Edition/QB64pe.git
synced 2024-09-16 16:44:05 +00:00
6e01fc8dce
Added new _STRCMP and _STRICMP commands for quick string comparisons. Cleaned up QB64 to finish removing the QUI (quick user insert) code and folders. Altered UCASE and LCASE routines to be faster in some situations for us.
96 lines
No EOL
3.7 KiB
Text
96 lines
No EOL
3.7 KiB
Text
The {{KW|_OPENCLIENT}} function connects to a Host on the Internet as a Client and returns the Client status handle.
|
|
|
|
|
|
{{PageSyntax}}
|
|
:{{Parameter|client_handle}} = {{KW|_OPENCLIENT}}("TCP/IP:8080:12:30:1:10")
|
|
|
|
|
|
|
|
{{PageDescription}}
|
|
* [[ERROR Codes|ILLEGAL FUNCTION CALL]] error if called with a string argument of the wrong syntax.
|
|
* Connects to a host somewhere on the internet as a client.
|
|
* Valid client handles are negative values. 0 means that the connection failed! Always check that the handle returned is NOT 0!
|
|
* {{KW|CLOSE}} client_handle closes the client. A failed handle of value 0 does not need to be closed.
|
|
|
|
|
|
{{PageExamples}}
|
|
''Example 1:'' Attempting to connect to a local host(your host) as a client. A zero return indicates failure.
|
|
{{CodeStart}}
|
|
|
|
client = {{Cl|_OPENCLIENT}}("TCP/IP:7319:localhost")
|
|
{{Cl|IF...THEN|IF}} client {{Cl|THEN}}
|
|
{{Cl|PRINT}} "[Connected to " + {{Cl|_CONNECTIONADDRESS}}(client) + "]"
|
|
{{Cl|ELSE}} {{Cl|PRINT}} "[Connection Failed!]"
|
|
{{Cl|END IF}} '' ''
|
|
|
|
{{CodeEnd}}
|
|
:'''NOTE:''' Try a valid TCP/IP port setting to test this routine!
|
|
|
|
|
|
''Example 2:'' Using a "raw" Download function to download the QB64 bee image and displays it.
|
|
{{CodeStart}}
|
|
'' ''
|
|
{{Cl|IF...THEN|IF}} Download("www.qb64.net/qb64.png", "qb64logo.png", 10) {{Cl|THEN}} ' timelimit = 10 seconds
|
|
{{Cl|SCREEN}} {{Cl|_LOADIMAGE}}("qb64logo.png",32)
|
|
{{Cl|ELSE}}: {{Cl|PRINT}} "Couldn't download QB64 logo."
|
|
{{Cl|END IF}}
|
|
{{Cl|SLEEP}}
|
|
{{Cl|SYSTEM}}
|
|
' ---------- program end -----------
|
|
|
|
{{Cl|FUNCTION}} Download (url$, file$, timelimit) ' returns -1 if successful, 0 if not
|
|
url2$ = url$
|
|
x = {{Cl|INSTR}}(url2$, "/")
|
|
{{Cl|IF...THEN|IF}} x {{Cl|THEN}} url2$ = {{Cl|LEFT$}}(url$, x - 1)
|
|
client = {{Cl|_OPENCLIENT}}("TCP/IP:80:" + url2$)
|
|
{{Cl|IF...THEN|IF}} client = 0 {{Cl|THEN}} {{Cl|EXIT FUNCTION}}
|
|
e$ = {{Cl|CHR$}}(13) + {{Cl|CHR$}}(10) ' end of line characters
|
|
url3$ = {{Cl|RIGHT$}}(url$, {{Cl|LEN}}(url$) - x + 1)
|
|
x$ = "GET " + url3$ + " HTTP/1.1" + e$
|
|
x$ = x$ + "Host: " + url2$ + e$ + e$
|
|
{{Cl|PUT (TCP/IP statement)|PUT}} #client, , x$
|
|
t! = {{Cl|TIMER}} ' start time
|
|
{{Cl|DO}}
|
|
{{Cl|_DELAY}} 0.05 ' 50ms delay (20 checks per second)
|
|
{{Cl|GET (TCP/IP statement)|GET}} #client, , a2$
|
|
a$ = a$ + a2$
|
|
i = {{Cl|INSTR}}(a$, "Content-Length:")
|
|
{{Cl|IF...THEN|IF}} i {{Cl|THEN}}
|
|
i2 = {{Cl|INSTR}}(i, a$, e$)
|
|
{{Cl|IF...THEN|IF}} i2 {{Cl|THEN}}
|
|
l = {{Cl|VAL}}({{Cl|MID$}}(a$, i + 15, i2 - i -14))
|
|
i3 = {{Cl|INSTR}}(i2, a$, e$ + e$)
|
|
{{Cl|IF...THEN|IF}} i3 {{Cl|THEN}}
|
|
i3 = i3 + 4 'move i3 to start of data
|
|
{{Cl|IF...THEN|IF}} ({{Cl|LEN}}(a$) - i3 + 1) = l {{Cl|THEN}}
|
|
{{Cl|CLOSE}} client ' CLOSE CLIENT
|
|
d$ = {{Cl|MID$}}(a$, i3, l)
|
|
fh = {{Cl|FREEFILE}}
|
|
{{Cl|OPEN}} file$ {{Cl|FOR}} {{Cl|OUTPUT}} {{Cl|AS}} #fh: {{Cl|CLOSE}} #fh ' erase existing file?
|
|
|
|
{{Cl|OPEN}} file$ {{Cl|FOR}} {{Cl|BINARY}} {{Cl|AS}} #fh
|
|
{{Cl|PUT}} #fh, , d$
|
|
{{Cl|CLOSE}} #fh
|
|
Download = -1 'indicates download was successfull
|
|
{{Cl|EXIT FUNCTION}}
|
|
{{Cl|END IF}} ' availabledata = l
|
|
{{Cl|END IF}} ' i3
|
|
{{Cl|END IF}} ' i2
|
|
{{Cl|END IF}} ' i
|
|
{{Cl|LOOP}} {{Cl|UNTIL}} {{Cl|TIMER}} > t! + timelimit ' (in seconds)
|
|
{{Cl|CLOSE}} client
|
|
{{Cl|END FUNCTION}} '' ''
|
|
{{CodeEnd}}
|
|
|
|
|
|
|
|
{{PageSeeAlso}}
|
|
* [[_OPENHOST]], [[_OPENCONNECTION]]
|
|
* [[_CONNECTED]], [[_CONNECTIONADDRESS$]]
|
|
* [[Email Demo]], [[Inter-Program Data Sharing Demo]]
|
|
* [[Computer File Sharing Demo]]
|
|
* [[IP Configuration]], [[WGET]] {{text|(HTTP and FTP file transfer)}}
|
|
* [[Downloading Files]]
|
|
|
|
|
|
{{PageNavigation}} |