Categories
Company
Local Language
Forums
Discussions
Forums
- Data Protection and Retention
- Entry Storage Systems
- Legacy
- Midrange and Enterprise Storage
- Storage Networking
- HPE Nimble Storage
Discussions
Forums
Discussions
Discussions
Discussions
Forums
Forums
Discussions
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
- BladeSystem Infrastructure and Application Solutions
- Appliance Servers
- Alpha Servers
- BackOffice Products
- Internet Products
- HPE 9000 and HPE e3000 Servers
- Networking
- Netservers
- Secure OS Software for Linux
- Server Management (Insight Manager 7)
- Windows Server 2003
- Operating System - Tru64 Unix
- ProLiant Deployment and Provisioning
- Linux-Based Community / Regional
- Microsoft System Center Integration
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Community
Resources
Forums
Blogs
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО08-21-2007 09:38 AM
тАО08-21-2007 09:38 AM
SYS$QIOW
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО08-21-2007 10:45 AM
тАО08-21-2007 10:45 AM
Re: SYS$QIOW
you how many bytes you got, and what those
bytes are. If you want more bytes, you need
to do another read operation.
> [...] or will the message end up at the
> first sys$qiow call?
Messages go to buffers, not to function calls.
Do you mean, "Will the new bytes (for which I
haven't asked) magically appear somewhere in
some buffer, updating a byte count, one or
more status values, and various other things
in other places?" No, I don't think so.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО08-21-2007 10:50 AM
тАО08-21-2007 10:50 AM
Re: SYS$QIOW
At a minimum, the call to SYS$QIOW must be executed a second time. Once an IO operation has completed, it is finished.
Your code can certainly re-execute the SYS$QIOW call, provided that all of the parameters are appropriate.
I would suggest examining some of the examples in the documentation set for both TCP package and the general OpenVMS documentation kit.
- Bob Gezelter, http://www.rlgsc.com
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО08-21-2007 11:31 AM
тАО08-21-2007 11:31 AM
Re: SYS$QIOW
sys$examples area under tcpip, that show
qio processing. Dean
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО08-21-2007 12:37 PM
тАО08-21-2007 12:37 PM
Re: SYS$QIOW
One subtlety of TCP and messages; you must be careful with the concept of packets or messages.
Within TCP, there are no units of "packets." There are no "messages." Meaning you might have to perform multiple $qio[w] calls to (re)assemble what you want to process as a message.
TCP is a stream of data, and you might get a single byte at a time, or you might get multiples of your messages. Don't treat it and don't assume it's a datagram protocol. Subtle errors can arise if you do.
This behavior is expected and intentional, but only tends to show up when the application or the system or the network is under stress. And if the application isn't coded to deal with the characters, you can end up with "torn" or otherwise corrupted "messages."
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
тАО08-21-2007 01:31 PM
тАО08-21-2007 01:31 PM
Re: SYS$QIOW
It sounds to me like you're venturing into the exciting and potentially confusing world of "network protcols". That is, following a set of rules for a "conversation" between two systems exchanging messages. The BIG trick here is to know when to talk, when to listen, and how or when to decide that the party at the other end of the wire isn't following the rules.
Although it may SOUND simple enough, it isn't! What if you issue your $QIOW and the other end doesn't send anything? You just hang there waiting forever.
Sometimes it's simpler to code this kind of exchange as multi threaded, full duplex, listening at all times. Instead of $QIOW, use $QIO with a completion AST. That way your application isn't hanging around waiting, and you can handle unexpected messages arriving. On the other hand it does require careful coding.
At the very least, you should add a timeout to your reads to prevent waiting forever. Get hold of a textbook on network protocols so you can discover some of the tricks and traps, rather than discovering them for yourself.