openserver() , closeserver() , serveruser() , servergroup() , serverpass() - Connect and disconnect from service


#include <sys/types.h>
#include "tstone.h"
SERVER *openserver(char *hostname,char *port);
SERVER *closeserver(SERVER *serverhandle);
int     serveruser(char *username);
int     servergroup(char *groupname);
int     serverpass(char *password);

These rather generic sounding functions are for establishing or disconnecting a communication channel to a Thunderstone Server. The presumption is made that the host and port you open is the correct one for the type of calls you will be making.

In general, the openserver() call returns a handle to the requested service at the specified hostname and port. The returned handle is of the type SERVER * and will have the value SERVERPN if there's a problem.

The closeserver() call shuts the open communication channel with a server and frees the allocated memory on both the client and the server associated with the connection. closeserver() will return the value SERVERPN.

The hostname is a string that is the given internet name or number of the machine on which the requested service is running. For example: or The port number is also a string, and is the port number assigned to the service when it is brought up initially on the server machine. The port number may also be assigned a name of a service that is enumerated in the file /etc/services.

Either hostname or port or both may be the empty string ("") indicating that the compiled in default is to be used. The default for hostname is "localhost" indicating the same machine that the client application is running on. The default port is "10000" for Metamorph and "10002" for Texis.

The serveruser(), servergroup(), and serverpass() calls set the user name, group name, and password, respectively, that openserver() will use when logging into the server. These functions will return zero on error. Non-zero is returned on success. If servergroup() is not used, the user will be logged into their default group as defined by the server.

The default user name and password are both the empty string ("").

If no user name is given then Texis will default to PUBLIC. If a user name and password is given then Texis will verify them against the users defined in Texis. You can use tsql to add users. See Chapter here for an in-depth discussion of security.


SERVER *se;                              /* network server pointer */
 SRCH   *sr;                                      /* search pointer */

                                           /* connect to the server */
 if(serveruser("me")         &&
    servergroup("somegroup") &&
    serverpass("mypassword") &&
     n_reghitcb(se,(void *)NULL,mycallback);  /* setup hit callback */
     if((sr=n_setqry(se,"power struggle"))!=SRCHPN)  /* setup query */
          if(!n_search(se,sr))                     /* find all hits */
              puts("n_search() failed");
          n_closesrch(se,sr);                  /* cleanup the query */
     closeserver(se);                     /* disconnect from server */

Make sure you are talking to the right port!

/etc/services, services(4)

Copyright © Thunderstone Software     Last updated: May 19 2023
Copyright © 2023 Thunderstone Software LLC. All rights reserved.