b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

c 16进制输出 c语言socket编程指南(13)

电脑杂谈  发布时间:2017-12-17 08:13:43  来源:网络整理

这里是这个数据结构的详细资料:

struct hostent:

h_name - 地址的正式名称。

h_aliases - 空字节-地址的预备名称的指针。

h_addrtype -地址类型; 通常是AF_INET。

h_length - 地址的比特长度。

h_addr_list - 零字节-主机网络地址指针。网络字节顺序。

h_addr - h_addr_list中的第一地址。

gethostbyname() 成功时返回一个指向结构体 hostent 的指针,或者 是个空 (NULL) 指针。(但是和以前不同,不设置errno,h_errno 设置错 误信息。请看下面的 herror()。)

但是如何使用呢? 有时候(我们可以从电脑手册中发现),向读者灌输 信息是不够的。这个函数可不象它看上去那么难用。

这里是个例子:

#include

#include

#include

#include

#include

#include

int main(int argc, char *argv[])

{

struct hostent *h;

if (argc != 2) { /* 检查命令行 */

fprintf(stderr,"usage: getip address/n");

exit(1);

}

if ((h=gethostbyname(argv[1])) == NULL) { /* 取得地址信息 */

herror("gethostbyname");

exit(1);

}

printf("Host name : %s/n", h->h_name);

printf("IP Address : %s/n",inet_ntoa(*((struct in_addr *)h->h_addr)));

return 0;

}

在使用 gethostbyname() 的时候,你不能用 perror() 打印错误信息 (因为 errno 没有使用),你应该调用 herror()。

相当简单,你只是传递一个保存机器名的字符串(例如 "whitehouse.gov") 给 gethostbyname(),然后从返回的数据结构 struct hostent 中获取信息。

唯一也许让人不解的是输出 IP 地址信息。h->h_addr 是一个 char *, 但是 inet_ntoa() 需要的是 struct in_addr。因此,我转换 h->h_addr 成 struct in_addr *,然后得到数据。

--------------------------------------------------------------------------------

客户-服务器背景知识

这里是个客户--服务器的世界。在网络上的所有东西都是在处理客户进 程和服务器进程的交谈。举个telnet 的例子。当你用 telnet (客户)通过23 号端口登陆到主机,主机上运行的一个程序(一般叫 telnetd,服务器)激活。 它处理这个连接,显示登陆界面,等等。

图2:客户机和服务器的关系

图 2 说明了客户和服务器之间的信息交换。

注意,客户--服务器之间可以使用 SOCK_STREAM、SOCK_DGRAM 或者其它(只要它们采用相同的)。一些很好的客户--服务器的例子有 telnet/telnetd、 ftp/ftpd 和 bootp/bootpd。每次你使用 ftp 的时候,在远 端都有一个 ftpd 为你服务。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-53951-13.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...