Socket套接字API简介

一、套接字地址结构:

struct in_addr 
{
in_addr_t   s_addr;  //32位IP地址,网络字节排序。
};

struct sockaddr_in
{
  unint8_t      sin_len  //结构长度 无符号的八位整数
  sa_faminly_t  sin_family;//协议族 AF_INET ,是一个无符号字段表示套接字结构中的地址族。
  in_port_t     sin_port   //16位tcp端口号,一般为无符号位的16位整数。

  struct  in_addr sin_addr;//32位ip地址 一般为无符号32位整数
   char  sin_zero[8] 


}

一般长度字段可由可无。

POSIX规范只需要这个结构中的三个字段:sin_family、sin_addr 和sin_port。
TCP端口号和IPv4地址在套接字结构中,总以网络字节来存储。

二、通用套接字地址结构

当作为一个参数任何套接字函数时,套接字地址结构总以引用形式来传递。然而处理套接字的函数必须处理来自所支持的任何协议族的套接字结构。

对于开发人员来说,通用套接字地址结构的唯一用途就是对指向特定于协议的套接字结构的指针执行类型强制转换。

例如:
int bind(int,struct sockaddr *,socklen_t);

struct sockaddr_in serv;

bind(sockfd,(struct sockaddr*)&serv,sizeof(serv));

三、套接字函数分类:

(1)从进程到内核传递套接字地址结构的函数有三个:bind、connect、sendto。
(2)从内核到进程传递套接字地址结构的函数有四个:accep、recvfrom、getseekname、getpeername。

四、字节排序函数:

uint16_t  htons(uint16_t host16bitvalue);
uint32_t  htonl(uint32_t host32bitvalue);

htons 转换TCP端口号 为网络序的。
htonl 转换TCPIP地址 为网络序的。
uint16_t  ntohs(uint16_t net16bitvalue);
uint32_t  ntohl(uint32_t net32bitvalue);

ntohs 转换TCP端口号 为主机序的。
ntohl 转换TCPIP地址 为主机序的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值