The call_server() function uses the following code to make the connection with the server:
if ((s = connect_to_server(host, port)) < 0)
return -1;
s is a file descriptor, the int that is initially returned by a call to socket().
connect_to_server() is a simple function outside GSS-API that uses sockets to create a connection. The source code for connect_to_server() is shown in the following example.
The source code for this example is also available through the Sun download center. See http://www.sun.com/download/products.xml?id=41912db5.
int connect_to_server(host, port)
char *host;
u_short port;
{
struct sockaddr_in saddr;
struct hostent *hp;
int s;
if ((hp = gethostbyname(host)) == NULL) {
fprintf(stderr, "Unknown host: %s\n", host);
return -1;
}
saddr.sin_family = hp->h_addrtype;
memcpy((char *)&saddr.sin_addr, hp->h_addr, sizeof(saddr.sin_addr));
saddr.sin_port = htons(port);
if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
perror("creating socket");
return -1;
}
if (connect(s, (struct sockaddr *)&saddr, sizeof(saddr)) < 0) {
perror("connecting to server");
(void) close(s);
return -1;
}
return s;
}