#include <arpa/inet.h>
int inet_aton(const char *strptr,
struct in_addr *addrptr);
//将strptr字符串转换成32位的网络字节序(二进制值--a.b.c.d->32)。
int_addr_t inet_addr(const char *strptr)
//功能通上,返回地址。
in_addr addr;
addr.s_addr = inet_addr("192.168.2.103");
char *inet_ntoa(stuct in_addr inaddr);//32位IP->a.b.c.d形式的
//将32位网络字节序二进制地址转换成点分十进制的串
a代表ASCII,n代表network。
网络、主机字节序转换函数
主机序转换到网络序:
u_short htons (u_short short);
u_long htonl (u_long hostlong);
网络序转换到主机序:
u_short ntohs (u_short short);
u_long ntohl (u_long hostlong);
h(host),n(network),l(long),s(short)
通过主机名访问网络
主机结构体
struct hostent
{
char *h_name;//主机的正式名称
char *h_aliases;//主机的别名
int h_addrtype;//主机的地址类型 AF_INET
int h_length;//主机的地址长度
char **h_addr_list;//主机的IP地址列表
}
#define h_addr h_addr_list[0] //主机的第一个IP地址
struct hostent *gethostbyname(const char *hostname)
socket
通用地址结构:
struct sockaddr
{
u_short sa_family;//协议族
char sa_data[14];//地址协议
}
Internet协议地址结构
struct sockaddr_in
{
short int sin_family;//协议族
unsigned short int sin_port;//端口号
struct in_addr sin_addr;//协议特定地址
unsigned char si_zero[8];//未使用,填0
}