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

服装公司网站网页设计网推技巧

服装公司网站网页设计,网推技巧,java动态web网站开发,商城小程序模板源码完整版一些概念 简单了解一下TCP,UDP这两个协议,和一些概念 TCP与UDP 学校教过TCP是 传输层协议有连接可靠传输面向字节流 而UDP是 传输层协议无连接不可靠传输面向数据报 当时完全不知道这些什么意思 网络字节序 网络通信,要接收和发送数据。我们知道…

一些概念

简单了解一下TCP,UDP这两个协议,和一些概念

TCP与UDP

学校教过TCP是

  • 传输层协议
  • 有连接
  • 可靠传输
  • 面向字节流


而UDP是

  • 传输层协议
  • 无连接
  • 不可靠传输
  • 面向数据报

当时完全不知道这些什么意思

网络字节序

网络通信,要接收和发送数据。我们知道机器分为大端和小端存储,那传输数据的时候就需要一个固定的标准,防止出错。
于是有了:TCP/IP规定的网络字节序,低地址高字节

1.发送主机通常将发送缓冲区中的数据按内存地址从低到高的顺序发出;
接收主机把从网络上接到的字节依次保存在接收缓冲区中,也是按内存地址从低到高的顺序保存;
2.因此,网络数据流的地址应这样规定:先发出的数据是低地址,后发出的数据是高地址.
TCP/IP协议规定,网络数据流应采用大端字节序,即低地址高字节. 不管这台主机是大端机还是小端机,
都会按照这个TCP/IP规定的网络字节序来发送/接收数据;
3.如果当前发送主机是小端, 就需要先将数据转成大端; 否则就忽略, 直接发送即可;

在这里插入图片描述

主机序列与网络序列的相互转换

在头文件<arpa/inet.h> 给了4个接口

函数含义作用
htonshost to network short本地主机的 16 位整数转为网络序
htonlhost to network long本地主机的 32 位整数转为网络序
ntohsnetwork to host short网络序的 16 位整数转为主机序
ntohlnetwork to host long网络序的 32 位整数转为主机序

Socket编程

sockaddr

sockaddr是网络通信的通用结构体

struct sockaddr {sa_family_t sa_family; // 地址族(协议族),如 AF_INETchar sa_data[14];      // 协议地址(具体内容依赖于地址族)
};

还有另外两个结构体:

  1. sockaddr_in
struct sockaddr_in {sa_family_t sin_family;   // 地址族,必须是 AF_INETuint16_t sin_port;        // 端口号(网络字节序)struct in_addr sin_addr;  // IP 地址char sin_zero[8];         // 填充字节,保持与 sockaddr 一致
};

特别提示: sin_addr
结构体in_addr封装如下

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

所以赋值的时候:要对s_addr进行操作

addr.sin_addr.s_addr = inet_addr("127.0.0.1"); // 点分十进制转网络字节序

地址类型给AF_INET,表示网络通信
2. sockadd_un

struct sockaddr_un {sa_family_t sun_family;     // 地址族,必须是 AF_UNIXchar sun_path[108];         // 本地文件路径,作为套接字标识
};

地址类型给AF_UNIX,表示本地通信
在这里插入图片描述

IP地址格式

IP地址有点分十进制(“127.0.0.1”)和十六进制4字节序列(0xC0A80101)

点分十进制是为了方便阅读,但是,s_addr是4字节序列的格式,像下面这样

addr.sin_addr.s_addr = inet_addr("127.0.0.1"); // 点分十进制转网络字节序

就需要调用函数来进行转换

函数作用
inet_aton点分十进制 → 4 字节网络序
inet_ntop4 字节网络序 → 点分十进制
in_addr_t inet_addr(const char *cp);

网络字节序再转换一次?

转换为4字节序列后,需要转换成网络字节序再存入sockaddr_in

好消息,好消息!
inet_addr先完成转换到4字节序列,再转换为网络字节序

// 创建 socket 文件描述符 (TCP/UDP, 客户端 + 服务器)
int socket(int domain, int type, int protocol);
// 绑定端口号 (TCP/UDP, 服务器)
int bind(int socket, const struct sockaddr *address,
socklen_t address_len);
// 开始监听socket (TCP, 服务器)
int listen(int socket, int backlog);
// 接收请求 (TCP, 服务器)
int accept(int socket, struct sockaddr* address,
socklen_t* address_len);
// 建立连接 (TCP, 客户端)
int connect(int sockfd, const struct sockaddr *addr,
socklen_t addrlen);

补充:内存置0另一种方法(bzero与memset)

memset很常用,这里补充一个新的接口

void bzero(void *s, size_t n);
//s:指向要清零的内存块的起始地址。
//n:要清零的字节数。

举个例子

struct sockaddr_in addr;
bzero(&addr, sizeof(addr));

他等价于

memset(&addr, 0, sizeof(addr));

当然:依然推荐用memset
因为bzero 在 POSIX 标准中已废弃

小结

介绍了socket基本概念和socket初始化的操作

http://www.dtcms.com/wzjs/407248.html

相关文章:

  • 公司网站建设一年多少钱旺道seo软件
  • 幼儿园网站建设的意义互联网营销师证书是国家认可的吗
  • p2p网站的建设如何提高网站排名
  • 做网站是干嘛torrent种子猫
  • 做弹幕网站有哪些百度收录的网站
  • 网站版面做的很好的公司seo系统
  • 一个空间可以做几个网站吗房产网站模板
  • 给wordpress上锁靠谱的seo收费
  • 深圳的网站制作公司站长网站查询工具
  • 如何做企业网站排名优化正规排名网站推广公司
  • 专门制作网页的工具seo神器
  • 电子商务网站怎么建搜索热门关键词
  • 江苏做帖子网站关键词挖掘站长工具
  • 网站建设 案例自动提取关键词的软件
  • 微信里的商家链接网站怎么做的短视频营销的优势
  • 阿里云账号密码发给网站开发千锋教育郑州校区
  • 成都行业网站游戏推广一个月能拿多少钱
  • 网站登录怎么退出sem工作原理
  • 京东购物百度优化推广
  • 网站购买后如何做最全磁力搜索引擎
  • directadmin备份网站北京优化网站方法
  • 布吉附近做网站seo推广优化外包公司
  • 许昌做网站团队16888精品货源入口
  • 哪些网站可以做设计赚钱我们seo
  • 巢湖seo推广seo网络推广怎么做
  • 湖北网站建设多少钱网络整合营销4i原则
  • 妙趣网 通辽网站建设江门网站建设模板
  • 电商做网站好用吗
  • 深圳网站建设高端创建网页步骤
  • 网站专业建设公司日照高端网站建设