PUT (TCP/IP statement): Difference between revisions
Jump to navigation
Jump to search
Communicating using unformatted/raw streamed data:
Your program MUST cater for these situations manually.
Navigation:
Main Page with Articles and Tutorials
Keyword Reference - Alphabetical
Keyword Reference - By usage
Report a broken link
(Created page with "The '''PUT #''' TCP/IP statement sends unformatted(raw) data to an open connection using a user's handle. {{PageSyntax}} :: '''PUT ''#handle'', , ''data'' ''' {{Parameters}} * The ''handle'' value is returned by the _OPENCLIENT, _OPENHOST or _OPENCONNECTION '''QB64''' functions. * The ''data'' can be any variable type value. Literal values are not allowed. <center>'''Communicating using unformatted/raw streamed data:'''</center> * Benefit: Communicate...") |
No edit summary |
||
(2 intermediate revisions by the same user not shown) | |||
Line 6: | Line 6: | ||
{{ | {{PageParameters}} | ||
* The ''handle'' value is returned by the [[_OPENCLIENT]], [[_OPENHOST]] or [[_OPENCONNECTION]] '''QB64''' functions. | * The ''handle'' value is returned by the [[_OPENCLIENT]], [[_OPENHOST]] or [[_OPENCONNECTION]] '''QB64''' functions. | ||
* The ''data'' can be any variable type value. Literal values are not allowed. | * The ''data'' can be any variable type value. Literal values are not allowed. | ||
Line 13: | Line 13: | ||
<center>'''Communicating using unformatted/raw streamed data:'''</center> | <center>'''Communicating using unformatted/raw streamed data:'''</center> | ||
* Benefit: Communicate with any TCP/IP compatible protocol (eg. FTP, HTTP, web-pages, etc) | * Benefit: Communicate with any TCP/IP compatible protocol (eg. FTP, HTTP, web-pages, etc) | ||
* Disadvantage: Streamed data has no 'message length' as such, just a continuous bunch of bytes all in a row. Some messages get fragmented and parts of messages can (and often do) arrive at different times. | * Disadvantage: Streamed data has no 'message length' as such, just a continuous bunch of bytes all in a row. Some messages get fragmented and parts of messages can (and often do) arrive at different times. | ||
* The position parameter (between the commas) is not used in TCP/IP statements as all data is streamed consecutively. | * The position parameter (between the commas) is not used in TCP/IP statements as all data is streamed consecutively. | ||
<center>'''Your program MUST cater for these situations manually.'''</center> | <center>'''Your program MUST cater for these situations manually.'''</center> | ||
{{ | {{FixedStart}}''Example: string variable b$'s length is adjusted to the number of bytes read.'' | ||
{{Cb|PUT (TCP/IP statement)|PUT #}}client, , a$ 'sends data (this could be a string, variable array, user defined type, etc) | {{Cb|PUT (TCP/IP statement)|PUT #}}client, , a$ 'sends data (this could be a string, variable array, user defined type, etc) | ||
{{Cb|GET (TCP/IP statement)|GET #}}openconn, , b$ 'reads any available data into variable length string b$ | {{Cb|GET (TCP/IP statement)|GET #}}openconn, , b$ 'reads any available data into variable length string b$ | ||
{{Cb|GET (TCP/IP statement)|GET #}}openconn, , x% 'reads 2 bytes of data as an integer value. | {{Cb|GET (TCP/IP statement)|GET #}}openconn, , x% 'reads 2 bytes of data as an integer value. | ||
{{ | {{FixedEnd}} | ||
: ''Explanation:'' Checking [[EOF]](o) is unnecessary. If 2 bytes are available, they are read into x%, if not then nothing is read and [[EOF]](o) will return -1 | : ''Explanation:'' Checking [[EOF]](o) is unnecessary. If 2 bytes are available, they are read into x%, if not then nothing is read and [[EOF]](o) will return -1 | ||
Line 31: | Line 31: | ||
{{PageSeeAlso}} | |||
* [[GET (TCP/IP statement)]], [[PUT|PUT #]] | * [[GET (TCP/IP statement)]], [[PUT|PUT #]] | ||
* [[_OPENCLIENT]], [[_OPENHOST]], [[_OPENCONNECTION]] | * [[_OPENCLIENT]], [[_OPENHOST]], [[_OPENCONNECTION]] | ||
{{PageNavigation}} | {{PageNavigation}} |
Latest revision as of 00:56, 29 January 2023
The PUT # TCP/IP statement sends unformatted(raw) data to an open connection using a user's handle.
Syntax
- PUT #handle, , data
Parameters
- The handle value is returned by the _OPENCLIENT, _OPENHOST or _OPENCONNECTION QB64 functions.
- The data can be any variable type value. Literal values are not allowed.
- Benefit: Communicate with any TCP/IP compatible protocol (eg. FTP, HTTP, web-pages, etc)
- Disadvantage: Streamed data has no 'message length' as such, just a continuous bunch of bytes all in a row. Some messages get fragmented and parts of messages can (and often do) arrive at different times.
- The position parameter (between the commas) is not used in TCP/IP statements as all data is streamed consecutively.
Example: string variable b$'s length is adjusted to the number of bytes read. PUT #client, , a$ 'sends data (this could be a string, variable array, user defined type, etc) GET #openconn, , b$ 'reads any available data into variable length string b$ GET #openconn, , x% 'reads 2 bytes of data as an integer value. |
- Explanation: Checking EOF(o) is unnecessary. If 2 bytes are available, they are read into x%, if not then nothing is read and EOF(o) will return -1
See the example in _OPENCLIENT
See also