Solaris 开发者安全性指南

打开与服务器的连接

call_server() 函数使用以下代码与服务器建立连接:

     if ((s = connect_to_server(host, port)) < 0)

          return -1;

s 是一个最初通过调用 socket() 返回的 int 类型的文件描述符。

connect_to_server() 是 GSS-API 外部的一个简单函数,它使用套接字来创建连接。 connect_to_server() 的源代码如以下示例所示。


注 –

此示例的源代码也可以通过 Sun 下载中心获取。请访问 http://www.sun.com/download/products.xml?id=41912db5



示例 5–2 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;

}