LabWindows/CVI

Content Type
Programming Language
Current manual

ServerTCPRead

ServerTCPRead

int ServerTCPRead (unsigned int conversationHandle, void *dataBuffer, size_t dataSize, unsigned int timeOut);

Purpose

Allows your program, acting as a TCP server, to read data from a client.

The function waits until data is available at the port or until the specified interval expires.

Note   If the function call is successful the return value is the number of bytes read. It is possible that TCP is not able to read all the data in one call. If necessary, you can check the number of bytes read and call this function repeatedly to read the rest of the data as shown in the following example:

Example Code

char * buffer;
int messageSize;
int bytesToRead;
int bytesRead;

/* Find messageSize and allocate buffer appropriately... */

bytesToRead = messageSize;

while (bytesToRead > 0)

{

bytesRead = ServerTCPRead (conversationHandle, &buffer[messageSize - bytesToRead], bytesToRead, 0);

bytesToRead -= bytesRead;

}

Parameters

Input
Name Type Description
conversationHandle unsigned int The conversation handle that uniquely represents the connection between the server and the client.
dataBuffer void * The pointer to the buffer in which to store the data.

NULL is not allowed.
dataSize size_t The maximum number of bytes to read.

dataSize must be less than or equal to the size of dataBuffer.

This function returns an error if you pass a value greater than UINT_MAX.
timeOut unsigned int Number of milliseconds that ServerTCPRead waits for data to be available on the connection.

ServerTCPRead returns as soon as it reads some data from the connection. The function waits the entire timeout period only if no data is available.

If you pass zero, the function uses a default timeout of 5,000 milliseconds.

Return Value

Name Type Description
status int Return value indicating whether the function was successful. Unless otherwise stated, zero represents successful execution and a negative number represents the error code.

You can call the GetTCPSystemErrorString function to obtain a system message that describes the error. The system messages can be more descriptive than the TCP Support Library error codes. To obtain the correct system error message, you must call GetTCPSystemErrorString immediately after calling the TCP Support Library function that failed.

For RegisterTCPServer and RegisterTCPServerEx, the return value is the port number assigned by the system if you passed zero for the port and the function was successful.

For functions that read or write data (ClientTCPRead, ClientTCPWrite, ServerTCPRead, ServerTCPWrite), if the function was successful, the return value is the number of bytes transferred.

You can have a maximum of 255 concurrent conversations and up to 1,024 connections. If you exceed this limit, -kTCP_TooManyConnections will be returned. You may not be able to open the maximum number of connections allowed by LabWindows/CVI because of limitations imposed by the operating system.

Additional Information

Library: TCP Support Library

Include file: tcpsupp.h

LabWindows/CVI compatibility: LabWindows/CVI 3.0 and later

Example

Refer to tcp\MultiClientServer.cws for an example of using the ServerTCPRead function.

Was this information helpful?