call_server() 関数は、次のコードを使ってサーバーとの接続を確立します。
if ((s = connect_to_server(host, port)) < 0) return -1;
s は int 型のファイル記述子であり、最初は socket() の呼び出しから戻されます。
connect_to_server() はソケット経由で接続を作成する単純な関数であり、GSS-API を使用していません。connect_to_server() のソースコードを、次に示します。
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; }