当前位置: 首页 > news >正文

容桂做外贸网站/怎么安装百度

容桂做外贸网站,怎么安装百度,嘉善做网站,网站建设域名服务器购买套接字地址结构 套接字编程中,五元组是广为人知的. (host_ip, host_port, target_ip, target_port, protocol). 其中 ip 和 port 就是由套接字地址结构来表示的, 无论是Server端监听的 ip 和 port 或是客户端连接的服务端的地址,都需要通过套接字地址结构来表示 ipv4 套接字结构…

套接字地址结构

套接字编程中,五元组是广为人知的. (host_ip, host_port, target_ip, target_port, protocol).
其中 ipport 就是由套接字地址结构来表示的, 无论是Server端监听的 ipport 或是客户端连接的服务端的地址,都需要通过套接字地址结构来表示

ipv4 套接字结构

# <netinet/in.h>struct in_addr{            /* Network byte order*/in_addr_t   s_addr;    /* 32-bit IPV4 address*/
};struct sockaddr_in{uint8_t         sin_len;sa_family_t     sin_family;     /* Address family, default: AF_INET */in_port_t       sin_port;       /* 16 bit port num: Network byte order */struct in_addr  sin_addr;       /* 32 bit ip addr: network byte order */char            sin_zero[8];    /* Unused */
};

在Linux的套接字结构中并没有sin_len 成员. POSIX规范中也不要求有这个成员. POSIX规范只需要这个结构中的3个字段 sin_family, sin_addr, sin_port. 几乎所有的实现都增加了sin_zero成员.

其中sin_port成员和sin_addr成员是网络字节序,需要使用字节排序函数处理。

通用套接字地址结构

将套接字结构(ipv4/ipv6/unix sock)传递给内核时需要转成通用的套接字地址结构。

struct sockaddr{uint8_t     sa_len;sa_family_t sa_family;char        sa_data[14];
};

值-结果参数

从内核到进程传递套接字地址结构的函数有4个: acceptrecvfromgetsocknamegetpeername
这4个函数中的两个参数都是指向某个套接字地址结构的指针和表示该结构大小的整形变量的指针

struct sockaddr_un cli;  /* Unix domain*/
socklen_t len = sizeof(cli);getpeername(unixfd, (sockaddr*) &cli, &len); /* len may have changed*/

这里使用的是len的指针,而不是len,原因在于:当函数被调用时,结构大小是一个值(value),它告诉内核该结构的大小,这样内核在写该结构时不至于越界;当信息返回时,结构大小又是一个结果(result),它告诉进程内核在该结构中究竟存了多少信息.这种类型的参数称为 值-结果(value-result)参数.

值-结果参数从内核中获取数据的调用中经常会用到. 在网络编程中除了从内核中获取套接字地址的调用外,下面的函数同样也使用了值-结果参数

select 函数中间的3个参数
getsockopot函数的长度参数
使用recvmsg函数, msghdr结构中的msg_namelenmsg_controllen字段
ifconfifc_len字段
sysctl 函数两个长度参数中的一个


字节排序函数

在网络通信中统一使用大端字节序(即网络字节序)
在套接字地址结构中, 以sockaddr_in 为例, sin_portsin_addr存储的port和ip均为网络字节序,
那么对于端口号为8080的端口来说,需要将8080转为网络字节序,才能放到套接字地址结构中。为此我们有字节序转换函数:

#include <netinet/in.h>uint16_t htons(uint16_t host16bitvalue);  // 返回:网络字节序
uint32_t htonl(uint32_t host32bitvalue);uint16_t ntohs(uint16_t net16bitvalue);
uint16_t ntohl(uint16_t net32bitvalue);  // 返回:主机的字节序

我们并不关心主机字节序和网络字节序的真实值,我们需要做的调用上述函数在套接字地址结构中存入转后的值就可以。
在那些主机为大端字节序的机器中,四个函数通常被定义为空宏。

转载于:https://www.cnblogs.com/pluviophile/p/unp-1.html

http://www.lbrq.cn/news/1547137.html

相关文章:

  • 江苏嘉隆工程建设有限公司网站/泉州百度广告
  • 政府网站安全如何做/站长工具排名查询
  • 遵义市网站建设/微帮推广平台怎么加入
  • 网站忧化是干什么的/品牌推广的渠道有哪些
  • 杭州短视频培训学校/sem优化服务公司
  • 网站建设预算明细表/广点通广告平台
  • php网站模块修改/网站建设步骤
  • 杭州化妆品网站建设/重庆seo网络营销
  • 58同城成都网站建设/免费网页制作平台
  • 网站开发市场规模/做网站比较好的公司有哪些
  • 做网站有包括哪些东西/整站优化加盟
  • 怎么引导做淘宝的客户做官方网站/无锡百度关键词优化
  • 宁夏网站建设中/seo百家论坛
  • 自己做网站 怎么赚钱/百度热榜排行
  • 0投资一天赚80/什么是seo关键词
  • 网站开发软硬件配置/百度seo权重
  • 做网站入门看什么书/个人网站如何优化关键词
  • wordpress博客非插件/优化大师手机版下载
  • 深圳找个做网站平台的/市场调研表模板
  • 邢台网站设计哪家专业/网站建设与管理就业前景
  • 学校建设网站/steam交易链接可以随便给别人吗
  • 登录自治区建设厅的网站查询/宁波网络推广seo软件
  • 北京网站建设学校/网站怎么提升关键词排名
  • 网站建设有哪些公司/sem技术培训
  • 合肥网站备案/百度推广官方电话
  • 网站后台显示不了/网络推广外包流程
  • 怎么做网站统计/厦门人才网官网招聘
  • 省政府网站建设/企业培训平台
  • 做百度推广送的网站/种子资源
  • 松原市住房和城乡建设局网站/太原关键词优化公司
  • 小程序开发APP
  • 可靠性测试:软件稳定性的守护者
  • 数字孪生 :提高制造生产力的智能方法
  • wx小游戏canvas能力封装
  • CSDN转PDF【无水印且免费!!!】
  • 高并发网络编程实战:深入理解epoll客户端的事件驱动模型