mirror of
https://github.com/QB64Official/qb64.git
synced 2024-08-31 13:30:15 +00:00
49 lines
2.6 KiB
Text
49 lines
2.6 KiB
Text
|
The {{KW|_CONNECTED}} function returns the status of a TCP/IP connection handle.
|
||
|
|
||
|
|
||
|
{{PageSyntax}}
|
||
|
:''result&'' = {{KW|_CONNECTED}}({{Parameter|connectionHandle&}})
|
||
|
|
||
|
|
||
|
{{PageDescription}}
|
||
|
* The handle can come from the {{KW|_OPENHOST}}, {{KW|OPENCLIENT}} or {{KW|_OPENCONNECTION}} QB64 TCP/IP functions.
|
||
|
* Returns -1 if still connected or 0 if connection has ended/failed.
|
||
|
* Do not rely solely on this function to check for ending communication,
|
||
|
* Use "time-out" checking as well and {{KW|CLOSE}} any suspect connections.
|
||
|
* If this function indicates the handle is not connected, any unread messages can still be read using {{KW|INPUT (TCP/IP statement)|INPUT #}} or {{KW|GET (TCP/IP statement)|GET #}}.
|
||
|
* Even if this function indicates the handle is not connected, it is important to {{KW|CLOSE}} the connection anyway or important resources cannot be reallocated.
|
||
|
|
||
|
|
||
|
''Example:'' Updating the [[_OPENHOST|_OPENHOST chat program example]] to manage the Users array when users are no longer connected.
|
||
|
{{CodeStart}}
|
||
|
'' ''
|
||
|
{{Cl|FOR...NEXT|FOR}} i = 1 {{Cl|TO}} numclients ' distribute incoming messages to all clients
|
||
|
{{Cl|IF...THEN|IF}} Users(i) {{Cl|THEN}} ' check for non-existing handle values(rare)
|
||
|
{{Cl|INPUT (TCP/IP statement)|INPUT #}}Users(i), message$
|
||
|
{{Cl|IF...THEN|IF}} message$ <> "" {{Cl|THEN}}
|
||
|
{{Cl|FOR...NEXT|FOR}} p = 1 {{Cl|TO}} numclients
|
||
|
{{Cl|IF...THEN|IF}} Users(p) {{Cl|THEN}} {{Cl|PRINT (TCP/IP statement)|PRINT #}}Users(p), message$
|
||
|
{{Cl|NEXT}} p
|
||
|
{{Cl|END IF}}
|
||
|
{{Cl|IF...THEN|IF}} {{Cl|_CONNECTED}}(Users(i)) {{Cl|IF...THEN|THEN}}
|
||
|
n = n + 1 ' new consecutive connected index
|
||
|
Users(n) = Users(i) ' assign handle value to consecutive index
|
||
|
{{Cl|ELSE}} : {{Cl|CLOSE}} #(Users(i)): Users(i) = 0 ' close and clear index
|
||
|
{{Cl|END IF}} ' if connected
|
||
|
{{Cl|END IF}} ' array handle exist
|
||
|
{{Cl|NEXT}} i
|
||
|
numclients = n: n = 0 '' ''
|
||
|
|
||
|
{{CodeEnd}}
|
||
|
:The connection routine is added to the [[_OPENHOST|chat program's]] message distribution code to update the User array and close bad connections. The value of the n index does not change for non-existing handles or lost connections, so it will always either match the numclients value or be less. This overwrites lost connection handles. Setting handles to 0 clears upper array indices. After the FOR loop has gone through all of the client users, the number of clients is updated to the value of n and n is reset to 0.
|
||
|
|
||
|
|
||
|
{{PageSeeAlso}}
|
||
|
* {{KW|_OPENCONNECTION}}
|
||
|
* {{KW|_OPENHOST}}
|
||
|
* {{KW|_OPENCLIENT}}
|
||
|
* {{KW|_CONNECTIONADDRESS$}}
|
||
|
* [[Downloading Files]]
|
||
|
|
||
|
|
||
|
{{PageNavigation}}
|