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

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

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

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

getpeername()函数

这个函数太简单了。

它太简单了,以至我都不想单列一章。但是我还是这样做了。 函数 getpeername() 告诉你在连接的流式套接字上谁在另外一边。函 数是这样的:

#include

int getpeername(int sockfd, struct sockaddr *addr, int *addrlen);

sockfd 是连接的流式套接字的描述符。addr 是一个指向结构 struct sockaddr (或者是 struct sockaddr_in) 的指针,它保存着连接的另一边的 信息。addrlen 是一个 int 型的指针,它初始化为 sizeof(struct sockaddr)。 函数在错误的时候返回 -1,设置相应的 errno。

一旦你获得它们的地址,你可以使用 inet_ntoa() 或者 gethostbyaddr() 来打印或者获得更多的信息。但是你不能得到它的帐号。(如果它运行着愚 蠢的守护进程,这是可能的,但是它的讨论已经超出了本文的范围,请参 考 RFC-1413 以获得更多的信息。)

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

gethostname()函数

甚至比 getpeername() 还简单的函数是 gethostname()。它返回你程 序所运行的机器的主机名字。然后你可以使用 gethostbyname() 以获得你 的机器的 IP 地址。

下面是定义:

#include

int gethostname(char *hostname, size_t size);

参数很简单:hostname 是一个字符数组指针,它将在函数返回时保存

主机名。size是hostname 数组的字节长度。

函数调用成功时返回 0,失败时返回 -1,并设置 errno。

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

域名服务(DNS)

如果你不知道 DNS 的意思,那么我告诉你,它代表域名服务(Domain Name Service)。它主要的功能是:你给它一个容易记忆的某站点的地址, 它给你 IP 地址(然后你就可以使用 bind(), connect(), sendto() 或者其它 函数) 。当一个人输入:

$ telnet whitehouse.gov

telnet 能知道它将连接 (connect()) 到 "198.137.240.100"。

但是这是如何工作的呢? 你可以调用函数 gethostbyname():

#include

struct hostent *gethostbyname(const char *name);

很明白的是,它返回一个指向 struct hostent 的指针。c 16进制输出这个数据结构 是这样的:

struct hostent {

char *h_name;

char **h_aliases;

int h_addrtype;

int h_length;

char **h_addr_list;

};

#define h_addr h_addr_list[0]


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

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

    • 张广杰
      张广杰

      配套组件和运用经验都不充分

    • 周利会
      周利会

      中国人民抗日战争已经胜利七十周年了

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