信息和其他信息。大多数socket函数需要一个指向一个socket地址结构作为参数。如下定义的结构与互联网协议的家族。

第一个结构是struct sockaddr的特有套接字信息:

struct sockaddr{ unsigned short sa_family; char sa_data[14];};

这是一个通用的套接字地址结构在大部分的套接字函数调用,将被传递。这里是成员字段的描述:

属性


描述

sa_family

AF_INET

AF_UNIX

AF_NS

AF_IMPLINK

这是一个地址族。在大多数基于互联网的应用当中,我们使用af_inet。

sa_data

Protocol Specific Address

根据地址的类型解释14字节的协议特定地址的内容。互联网的家庭族中我们将使用端口号的IP地址为bysockaddr_in结构定义如下。

第二个结构,帮助引用套接字的元素如下:

struct sockaddr_in { short int sin_family; unsigned short int sin_port; struct in_addr sin_addr; unsigned char sin_zero[8];};

这里是成员字段的描述:

属性


描述

sa_family

AF_INET

AF_UNIX

AF_NS

AF_IMPLINK

这是一个地址族。在大多数基于互联网的应用当中,我们使用af_inet。

sin_port

Service Port

网络字节序的一个16位端口号。

sin_addr

IP Address

网络字节序的一个32位地址。

sin_zero

Not Used

设定为NULL(不被使用)

下一个结构仅用于上述结构中的一个结构域,并拥有32位的netid/主机ID。

struct in_addr { unsigned long s_addr;};

这里是成员字段的描述:

属性


描述

s_addr

service port

网络字节序的一个32位地址。

还有一个更重要的结构。这个结构是用来保持主机相关的信息。

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]};

这里是成员字段的描述:

属性


描述

h_name

ti.com etc

主机的官方名称。例如tutorialspoint.com,Google.com等。

h_aliases

TI

列出主机别名。

h_addrtype

AF_INET

基于互联网的包含地址和家庭族协议的应用程序,它将永远为af_inet

h_length

4

保持4字节的互联网地址的地址长度。

h_addr_list

in_addr

互联网地址的指针h_addr_list [ 0 ]数组,h_addr_list [ 1 ]等都指向结构in_addr。

注: h_addr被定义为h_addr_list[0],以保持向后兼容。.

下面的结构是用来保持服务和相关联的端口有关的信息。

struct servent{ char *s_name; char **s_aliases; int s_port; char *s_proto;};

这里是成员字段的描述:

属性


描述

s_name

http

这是官方的服务名称。例如SMTP,FTP POP3等。

s_aliases

ALIAS

其将存放服务别名的列表。大部分的时间将被设置为NULL。

s_port

80

这将有相关联的端口号。例如HTTP,则为80。

s_proto

TCP 

UDP

这将被设置为所使用的协议。使用TCP或UDP网络服务。

套接字结构上的提示:

套接字地址结构是每一个网络程序的一个组成部分。我们分配填补在指针传递给它们的各种套接字函数。有时候,我们通过一个这样的结构指针的socket函数,它填补了内容。

作为另一个参数。

参数。

请务必将结构体变量设置为NULL(即'\0')用memset()的bzero()函数,否则在你的结构,它可能会得到意想不到的垃圾值。