linuc c网络

linuc c网络

什么是网络编程

网络编程的基本概念:套接字=传输协议+端口号+IP地址

套接字相关的数据类型:

struct sockaddr

{

unsigned shor int sa_family;

char sa_data[14];

};

sa_family:指定通信的地址类型。如果是TCP/IP通信,则改制时AF_INET

sa_data:最多使用14个字符长度,用来保存IP地址和端口信息

struct socketaddr_in

{

unsigned short int sin_family;

uint16_t sin_port;

struct in_addr sin_addr;

unsigned char sin_zero[8];

};

这个结构体的成员作用如下所示。

sin_family: 与sockaddr结构体中的sa_family相同、

sin_port: 套接字使用的端口号

sin_addr:需要访问的IP地址

sin_zero:未使用的字段,填充为0

在这一结构体中,in_addr也是一个结构体,作用时用来保存一个IP地址

struct in_addr

{

uint32_t s_addr;

};


域名和IP地址

gethostbyname:用域名取得主机的IP地址:

头文件:sys/socket.h  netdb.h

函数定义:struct hostent  *gethostbyname(const char * name);

函数说明:name是一个表示域名的字符串。函数会把这个域名转换成一个结构体返回。

在域名解析时,可能没有这个域名或域名服务器发生错误。可能返回错误信息,可以用h_error来捕 捉错误编号。

struct hostent
{
	char	*h_name;   //正式的主机名
	char	**h_aliases; //这个主机的别名
	int		h_addrtype;	//主机名的类型
	int		h_length;	//地址的长度
	char	**h_addr_list;	//从域名服务器取得的主机的地址
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值