![]() |
![]() HP OpenVMS Systemsask the wizard |
![]() |
The Question is: I have a question on the "send" system call used on sockets. The version of the TCP/IP installed on my OpenVMS box is, TCPIP> show version DIGITAL TCP/IP Services for OpenVMS Alpha Version V5.0A on a AlphaStation 255/300 running OpenVMS V7.2-1 I have written a Client program that runs under the above said OpenVMS machine and I have used the C Socket Library routines in my client program. I have used the "send" system call to send the data to the server program. The Server program runs under Digital UNIX machine and it is not under my control. I check in my program the number of bytes returned by "send" against the number that I have requested it to write. And the number of bytes returned by "send" is not equal to that I have requested to write and it happens very occationally. This results in the data going out of sync in the server side and the server starts discarding my packets and disconnects the connection. For ex, if I request "send" to write 64 bytes, the return value from "send" tells me that it has sent only 30 bytes. I am not sure if it has written only 30 bytes and what have happend to the remaining 34 bytes. Now, is there a way to tell "send" to send either the entire amount of data or none? Is there a way to ensure that "send" will send the entire amount of data before we do a "send"? Please clarify this question. Thanks. Brindha brindha.mohan@gtech.com The Answer is : Interesting. This would initially appear to be a bug in the send call or in the supporting code. Please first apply the ECO kit for TCP/IP Services V5.0A, then -- if the problem persists -- please contact the Compaq Customer Support Center directly to report this. A concise source code reproducer would be useful, so that the support center can see the exact sequence used.
|