L_InetCreatePacket

#include "l_bitmap.h"
#include "ltnet.h"

L_LTNET_API L_INT L_InetCreatePacket(phPacket, uExtra, pExtra, pszFormat, )

pHINETPACK phPacket;

/* pointer to a packet */

L_UINT uExtra;

/* size of the binary data */

L_VOID * pExtra;

/* binary data to be sent */

L_CHAR * pszFormat;

/* format describing the parameters */

 

/* variable list of parameters */

Creates a packet.

Parameter

Description

phPacket

Pointer to the variable to be updated with the newly created packet.

uExtra

Size of the binary data. Used only if pExtra is not NULL.

pExtra

Binary (extra) data to be sent. Use NULL if there is no binary data to send.

pszFormat

Format of the command parameters. Possible values are:

 

Value

Meaning

 

%d

decimal integer

 

%l

long signed integer

 

%c

character

 

%s

string

 

%ud

unsigned long integer

 

%us

unsigned short integer

 

%ss

signed short integer

 

%bs

unsigned string

 

Variable list of parameters for this command.

Returns

SUCCESS

The function was successful.

< 1

An error occurred. Refer to Return Codes.

Comments

This function allows the user to create a packet containing the parameters to send to a remote computer. Note that this packet can be used to send both commands and responses. The packet contains a binary chunk (described with uExtra and pExtra) and a variable number of arguments (described by pszFormat). If there are no parameters to send, pszFormat can be either NULL or an empty string ("").

Call L_InetFreePacket when the packet is no longer needed, to free the memory allocated for the packet.

Required DLLs and Libraries

LTNET

For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application

See Also

Functions:

L_InetCreatePacketFromParams, L_InetFreePacket

Topics:

Sending Commands and Responses

 

A Client-Server Diagram: Sending Commands and Responses

Example

In the second example, the function will rotate a bitmap, but it will pass the bitmap ID as an argument. The bitmap ID will have to be retrieved from the remote computer. One way to get the bitmap id is to process the response from a CMD_LOAD command.

#define CMD_FLIP (CMD_USER_CUSTOM + 1)
#define CMD_ROTATE (CMD_USER_CUSTOM + 2)
// Example 1
 L_INT InetCreatePacketFirstExample(L_COMP hComputer)
{
   L_INT nRet;
   HINETPACK cmdFlip = NULL;
   /* Create a packet for a flip command. The remote program would probably interpret it as 'Flip the current bitmap'.
      Note that you don't really have to create a packet for commands with no arguments, since you can pass NULL for the packet.
      We are just showing that you can use NULL or "" as the format string.*/
   nRet = L_InetCreatePacket(&cmdFlip,0,NULL,NULL);
   if(nRet != SUCCESS)
      return nRet;
   nRet = L_InetSendCmd(hComputer, (CMDTYPE) CMD_FLIP, 1, cmdFlip);
   if(nRet != SUCCESS)
      return nRet;
   L_InetFreePacket(cmdFlip);
   return SUCCESS;
}
// Example 2
 L_INT InetCreatePacketSecondExample(L_UINT uBitmapID,L_COMP hComputer)
{
   L_INT nRet;  
   HINETPACK cmdRotate = NULL;
   /* Create a packet for a rotate command. Note that it contains no binary data,
      one integer parameter and three unsigned integer parameters */
   nRet = L_InetCreatePacket(&cmdRotate,0,NULL,"%ud%d%ud%ud",uBitmapID, 45, ROTATE_RESIZE,RGB(255,0,0));
   if(nRet != SUCCESS)
      return nRet;
   nRet = L_InetSendCmd(hComputer, (CMDTYPE) CMD_ROTATE, 2, cmdRotate);
   if(nRet != SUCCESS)
      return nRet;
   L_InetFreePacket(cmdRotate);
   
   return SUCCESS;
}