Tcp4u - Multi-purpose functions


Tcp4uCleanup


This function closes opened sockets, frees internal buffers. This function fails only if a blocking call is in progress. In this case, it tries to cancel the blocking call, thus the next Tcp4uCleanup succeeds.
If Tcp4uInit has not been called, Tcp4uCleanup returns TCP4U_SUCCESS.
The sample below shows a "simple" way to close a application using a Windows message loop.

Syntax:  Tcp4uCleanup ()

Return:

TCP4U_ERROR
A Blocking call is in progress
TCP4U_SUCCESS
Cleanup done

Example :
   case WM_TIMER :
         KillTimer (hWnd, wParam);
         PostMessage (hWnd, wParam, 0, 0l);
         break;
 
   case WM_CLOSE : 
         if (Tcp4uCleanup ()==TCP4U_ERROR) 
          { SetTimer (hWnd, WM_CLOSE, 500l, 0);
            return FALSE; } 
         else 
          { DestroyWindow (hWnd);
            PostQuitMessage (); }
         break;

Tcp4uInit


This function initializes the internal structures of Tcp4u. The Windows implementation calls WSAStartup which initializes the module Winsock.Dll.
It must be called by each task which want to use Tcp4u services.
Note: This call is not necessary in order to use the Unix functions, but required for portability.

Syntax:  Tcp4uInit ()

Return:

TCP4U_ERROR
(Windows only) Tcp4w has not found a correct Winsock.Dll.
TCP4U_SUCCESS
Task is registered.

Example : 
if (Tcp4uInit ( ) != TCP4U_SUCCESS)  
        {
          MessageBox (hWnd, "Init Error", "Sample App", MB_OK);
          PostMessage (hWnd, WM_CLOSE, 0, 0l);
        }

Tcp4uVer


Tcp4w returns the version number of the package as an integer. The low order byte is the release number, the high order byte is the major version number.
The function copies in the user's buffer a string which contains information on the pacakge (name, version, author, copyright). This string is guaranteed not to exceed 100 characters.

Syntax:  Tcp4uVer(LPSTR szVerStr, int nStrSize)

Arguments:

szVerStr
a buffer which is to receive the version information
nStrSize
its size


Return:

int
an integer which contains the version.

Example:
   char szStr[100];
     Tcp4uVer (szStr, sizeof szStr);
     Mprintf ("Using %s\n", szStr);

TcpGetLocalID


This function identifies the local station.
Note : The DWORD type depends on the platform. For Windows, the predefined DWORD type has been chosen (a 4-bytes integer), for other platforms, this type is defined as a 4 characters structure.

Syntax:  TcpGetLocalID (LPSTR szStrName, int uNameSize, DWORD *lpAddress)

Arguments:

szStrName
A pointer on a string which is to be filled with the name of the station. If the pointer is NULL, the name of the station is not returned.
uNameSize
The size of the buffer szStrName.
lpAddress
A pointer on a double word which is to be filled with the IP address of the station. If this pointer is NULL, the IP-Address is not returned.


Returns:

TCP4U_ERROR
The IP-stack was unable to get the name of the local station.
TCP4U_OVERFLOW
The name is longer than the given buffer.
TCP4U_SUCCESS
The requested data are available.

Example:
char StationName[64];
DWORD IPAddress;
unsigned char *cAdd = (char *) &IPAddress;
   TcpGetLocalID( StationName, sizeof StationName, & IPAddress);
   printf ("Local Station is %s, Address %u.%u.%u.%u",
             StationName, cAdd[0], cAdd[1], cAdd[2], cAdd[3]);

Tcp4uEnableLog


This function causes Tcp4u to log events like errors, socket calls or Tcp4u calls. It can be used to dump the frames sent and received by Tcp4u both in hexadecimal and in ASCII.
On Windows platforms, the logs are generated using the OutputDebugString call, they can be displayed by external tools like DbWin, Dbmon or DbWin32. On other platforms, the logs are sent on stderr.
The action depends on the uMask argument which is any combination of the following values :

LOG4U_CALL
0x0001
log each tcp socket function
LOG4U_DBCALL
0x0002
log db socket function
LOG4U_INTERN
0x0008
log each application level call
LOG4U_PROC
0x0010
log each Tcp4u/Tn4u APIs call
LOG4U_HIPROC
0x0020
log each app level call
LOG4U_EXIT
0x0040
log each Tcp4u/Tn4u APIs exit
LOG4U_HIEXIT
0x0080
log each application level exit
LOG4U_DUMP
0x4000
dump received/sent frames in Hexadecimal and ASCII
LOG4U_ERROR
0x8000
log errors
LOG4U_ALL
0xFFFF
get all logs
Syntax:  Tcp4uEnableLog (unsigned uMask)

Arguments:

uMask
An integer which precize the detail of reports
Exemple:
    Tcp4uEnableLog (LOG4U_ERROR | LOG4U_DUMP);
    HttpGetFile (szURL, NULL, "/tmp/file");
Output:
> 47 45 54 20 2F 20 48 54 - 54 50 2F 31 2E 30 0D 0A   GET / HTTP/1.0..
> 41 63 63 65 70 74 3A 20 - 69 6D 61 67 65 2F 67 69   Accept: image/gi
> 66 2C 20 69 6D 61 67 65 - 2F 78 2D 78 62 69 74 6D   f, image/x-xbitm
> 61 70 2C 20 69 6D 61 67 - 65 2F 6A 70 65 67 2C 20   ap, image/jpeg, 
> 69 6D 61 67 65 2F 70 6A - 70 65 67 2C 20 2A 2F 2A   image/pjpeg, */*
> 0D 0A                                               ..
> 55 73 65 72 2D 41 67 65 - 6E 74 3A 20 48 74 74 70   User-Agent: Http
> 34 75 20 62 79 20 50 68 - 2E 20 4A 6F 75 6E 69 6E   4u by Ph. Jounin
> 20 61 6E 64 20 4C 2E 20 - 4C 65 20 42 72 61 73 0D    and L. Le Bras.
> 0A                                                  .
> 0D 0A                                               ..
< 48 54 54 50 2F 31 2E 31 - 20 32 30 30 20 4F 4B      HTTP/1.1 200 OK
< 44 61 74 65 3A 20 54 75 - 65 2C 20 30 39 20 44 65   Date: Tue, 09 De
< 63 20 31 39 39 37 20 31 - 33 3A 35 34 3A 30 34 20   c 1997 13:54:04 
< 47 4D 54 0D 0A 53 65 72 - 76 65 72 3A 20 41 70 61   GMT..Server: Apa
< 63 68 65 2F 31 2E 32 62 - 37 0D 0A 43 6F 6E 6E 65   che/1.2b7..Conne
< 63 74 69 6F 6E 3A 20 63 - 6C 6F 73 65 0D 0A 43 6F   ction: close..Co
< 6E 74 65 6E 74 2D 54 79 - 70 65 3A 20 74 65 78 74   ntent-Type: text
< 2F 68 74 6D 6C 0D 0A 4C - 61 73 74 2D 4D 6F 64 69   /html..Last-Modi
< 66 69 65 64 3A 20 46 72 - 69 2C 20 31 39 20 53 65   fied: Fri, 19 Se
< 70 20 31 39 39 37 20 31 - 32 3A 34 37 3A 31 35 20   p 1997 12:47:15 
< 47 4D 54 0D 0A 45 54 61 - 67 3A 20 22 32 39 37 64   GMT..ETag: "297d
< 30 2D 38 39 65 2D 33 34 - 32 32 37 34 35 33 22 0D   0-89e-34227453".
< 0A 43 6F 6E 74 65 6E 74 - 2D 4C 65 6E 67 74 68 3A   .Content-Length:
< 20 32 32 30 36 0D 0A 41 - 63 63 65 70 74 2D 52 61    2206..Accept-Ra
< 6E 67 65 73 3A 20 62 79 - 74 65 73 0D 0A 0D 0A      nges: bytes....

Overview Multi purpose func. TCP functions Telnet related func HTTP functions UDP functions SMTP functions
Tcp4u version 3.31 by Ph. Jounin and Laurent Le Bras Last updated: 10th march 1998