| 跳过导航链接 | |
| 退出打印视图 | |
|
Oracle Solaris 开发者安全性指南 Oracle Solaris 10 8/11 Information Library (简体中文) |
call_server() 函数使用以下代码与服务器建立连接:
if ((s = connect_to_server(host, port)) < 0)
return -1;
s 是一个最初通过调用 socket() 返回的 int 类型的文件描述符。
connect_to_server() 是 GSS-API 外部的一个简单函数,它使用套接字来创建连接。connect_to_server() 的源代码如以下示例所示。
注 - 此示例的源代码也可以通过 Oracle 下载中心获取。请参见 https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_SMI-Site/en_US/-/USD/ViewProductDetail-Start?ProductRef=Security_code-Dev1.1-G-F@CDS-CDS_SMI。
示例 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;
}