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

个人做理财网站wordpress添加注册页面模板

个人做理财网站,wordpress添加注册页面模板,计算机专业就业方向和前景,网站seo数据分析文章目录 正确理解端口号理解源IP地址和目的IP地址认识端口号端口号和进程ID 理解Socket网络字节序socket编程接口创建socket套接字bind绑定套接字listen建立监听accept接受连接connect建立连接sendto发送数据接收数据close关闭套接字 sockaddr结构体 正确理解端口号 理解源IP… 文章目录 正确理解端口号理解源IP地址和目的IP地址认识端口号端口号和进程ID 理解Socket网络字节序socket编程接口创建socket套接字bind绑定套接字listen建立监听accept接受连接connect建立连接sendto发送数据接收数据close关闭套接字 sockaddr结构体 正确理解端口号 理解源IP地址和目的IP地址 我们知道通过IP地址我们能在网络中唯一标识一台主机这也就意味着只要我知道你的IP地址就能向你的主机发送数据。但是这有一个问题主机接收到数据之后发送给哪个进程呢也就是说光靠IP地址我们只能找到目标主机但是更为详细的选择哪个进程就无能为力了。所以我们需要有端口号。端口号就是主机唯一标识进程的一个16字节整数拿着IP地址和端口号我们就能在浩瀚的网络中找到目标主机的目标进程。更为准确的网络通信本质还是进程间通信只不过这两个进程可能不在一台主机上。 认识端口号 根据上面介绍总结端口号的特点 端口号是一个2字节16位的整数端口号用来标识一个进程告诉操作系统当前从网卡收到的数据要交给哪一个进程IP地址端口号能在网络世界中标识唯一一个进程同一台主机下一个端口号只能被一个进程占用 更为具体地端口号地范围是0-65535其中 0-1023表示的是知名端口号一般是系统或者是特权进程使用1024-65535操作系统动态分配的端口号客户端程序的端口号就是由操作系统从这个范围分配的 端口号和进程ID 我们说到端口号是为了唯一标识一台主机的某个进程但是为什么不直接使用进程PID呢进程PID的作用也是标识唯一一个进程呐。原因如下 PID标识的是正在运行中的进程一旦程序退出这个进程就找不到了PID是变化的可能每次运行程序得到的PID都不一样更深层面上来说进程ID属于操作系统层面端口号处于网络层面如果端口号和进程PID绑定会让系统进程管理和网络强耦合实际设计的时候并没有选择这么做。 理解Socket 综上所述网络中的两个进程要想相互通信通信的数据得明确四个属性源主机的IPPort目标主机的IPPort。我们把IPPort的组合就称为套接字Socket。 网络字节序 我们知道数据在内存中的存储方式有大小端之分磁盘文件中的多字节数据相对于文件中的偏移地址也有大小端之分网络数据流也有大小端之分。如果传输数据双方的主机一个是大端存储一个是小端存储假设我们不做任何处理就将数据发送能够给对方那对方拿到的数据就会出现乱码。为了避免这种情况我们需要在将数据发送到网络之前将数据转换成网络字节序具体的 TCP/IP 协议规定,网络数据流应采用大端字节序,即低地址高字节所以如果当前发送主机是小端, 就需要先将数据转成大端; 否则就忽略, 直接发送即可。 此外我们可以在代码中调用相关库函数来做网络字节序和主机字节序的转换 其中 htonl函数的作用是将 32 位的长整数从主机字节序转换为网络字节序,例如将 IP 地址转换后准备发送htons函数的作用是将 16 位的短整数从主机字节序转换为网络字节序,例如将 端口号 地址转换后准备发送ntohl函数的作用是将 32 位的长整数从网络字节序转换为主机字节序,例如将 接收到的 IP 地址转换后使用ntohs函数的作用是将 16 位的短整数从网络字节序转换为主机字节序,例如将接收到的端口号转换后使用 注意以上函数区别。 socket编程接口 下面介绍一些常见的socket接口 C // 创建 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);一般来说使用socket编程通常需要包含四个头文件 #include sys/types.h #include sys/socket.h #include arpa/inet.h #include netinet/in.h创建socket套接字 可以使用socket函数来创建一个套接字 #include sys/types.h #include sys/socket.h// 创建一个IPv4的TCP套接字 int socket(int domain, int type, int protocol);domain:地址簇常见的有AF_INET(IPv4),和AF_INET6(IPv6)type:套接字类型常见的有SOCK_STREAM(TCP)SOCK_DGRAM(UDP)protocol:协议通常为0自动选择也可以指定协议如IPPROTO_TCP 或 IPPROTO_UDP。成功时返回一个套接字描述符失败时返回-1,并设置error 注意这里的套接字描述符其实就是文件描述符查看man手册我们可以看到 也就是说调用socket这个函数得到一个文件描述符在操作系统的内核中它对应于一个数据结构存储了该套接字的各种状态信息和资源例如IP地址、端口号、通信协议、缓冲区等。 bind绑定套接字 bind函数将套接字绑定到一个IP地址和端口号。 #include sys/types.h #include sys/socket.h int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);sockfd:套接字描述符addr:指向ockaddr结构体的指针该结构体对象包含了要绑定的地址信息对于IPv4使用sockaddr_in 结构体对于IPv6使用 sockaddr_in6 结构体。addr_lenaddr指向结构体对象的大小通常使用sizeof获取成功时返回0失败时返回-1并设置errno listen建立监听 listen函数使套接字进入监听状态准备接受连接请求。 #include sys/types.h #include sys/socket.h int listen(int sockfd, int backlog);sockfd:套接字描述符backlog:挂起连接的最大队列长度即最多有多少个连接可以等待被接受成功时返回0失败时返回-1并设置errno accept接受连接 accept函数接受一个连接请求返回一个新的套接字描述符用于与客户端通信 #include sys/types.h #include sys/socket.h int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);sockfd:监听套接字描述符,即listen获取的套接字描述符addr指向sockaddr 结构体对象的指针用于存储客户端地址信息addrlen:指向addr指向结构体对象的大小成功时返回新的套接字描述符失败时返回-1并设置errno connect建立连接 connect函数用于客户端连接到服务器 #include sys/types.h #include sys/socket.h int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);sockfd:套接字描述符addr指向sockaddr 结构体对象的指针用于存储服务器地址信息addrlen: sockaddr 结构体的大小。成功时返回0失败时返回-1并设置errno sendto发送数据 sendto函数是用于在 无连接套接字**如UDP上发送数据 的。它允许程序指定目标地址从而可以在一个套接字上与多个目标进行通信。 #include sys/types.h #include sys/socket.h ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,const struct sockaddr *dest_addr, socklen_t addrlen);sockfd: 套接字描述符通过 socket 函数创建buf: 指向要发送的数据缓冲区len: 要发送的数据的长度flags: 发送标志通常为0dest_add: 指向 sockaddr 结构体的指针包含目标地址和端口号addrlen: sockaddr 结构体的大小成功时返回发送的字节数,失败时返回-1并设置 errno 以指示错误 接收数据 recvfrom 函数用于在无连接的套接字如UDP上接收数据它允许程序获取发送数据的源地址。它常用于UDP服务器接收数据包并且能够知道数据包的来源。 #include sys/types.h #include sys/socket.h ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen);sockfd: 套接字描述符通过 socket 函数创建。buf: 指向存储接收数据的缓冲区。len: 缓冲区的长度即可以接收的最大字节数。flags: 接收标志通常为0。src_addr: 指向 sockaddr 结构体的指针用于存储发送方的地址信息。addrlen: 指向 socklen_t 变量的指针表示 sockaddr 结构体的大小。调用函数时需要设置为 sockaddr 结构体的大小函数返回时设置为实际地址的长度。 close关闭套接字 跟关闭文件描述符一样创建的套接字描述符用完之后也需要手动关闭同样的使用close函数。 #includeunistd.h int close(int fd);成功返回0失败返回-1 sockaddr结构体 sockaddr 结构体用于存储套接字地址信息。该结构体是网络地址结构体的通用形式。在具体使用时通常会用到特定协议族的派生结构体如 sockaddr_in、sockaddr_un。各种网络协议的地址格式并不相同. sockaddr: struct sockaddr {sa_family_t sa_family; // 地址族Address familychar sa_data[14]; // 套接字地址数据Socket address data };sockaddr_in: struct sockaddr_in {sa_family_t sin_family; // 地址族AF_INETin_port_t sin_port; // 端口号Port number网络字节序struct in_addr sin_addr; // IPv4地址char sin_zero[8]; // 填充字节使结构体大小与 sockaddr 一致 };in_addr: struct in_addr {uint32_t s_addr; // 32位IPv4地址网络字节序 };in_addr 用来表示一个 IPv4 的 IP 地址. 其实就是一个 32 位的整数;
http://www.sczhlp.com/news/151912/

相关文章:

  • 上海网站建设哪家便宜前端做网站使用的软件工具
  • 网站建设费用计入哪个会计科目wordpress 页面 列表
  • 企业网站建设公司选择分析品牌营销是什么工作
  • 设计网站如何推广哪些网站做企业招聘不要花钱
  • 唐山的网站建设公司网站seo软件
  • 农家乐网站源代码环球贸易网国际站
  • 欧洲外贸网站有哪些如何申请营业执照
  • 青岛找网站建设公司哪家好张家港建网站价格
  • 最好网站设计案例简单好看个人主页网站模板
  • 建立网站的技术手机做服务器建网站
  • 做塑料哪个网站好雅思培训
  • 能查个人信息的网站做网站为什么要用php框架
  • cms(网站内容管理系统)有哪些彩票网站怎么做
  • 网站之家网站域名怎么查询
  • 大型网站开发流程和步骤东莞感染人数最新消息
  • 网站建设有哪几种形式网站的百度词条怎么做
  • 如何做网站跳转页面怎么做广告图片设计
  • 小说网站的会员充值是怎么做的四川网站建设找哪家
  • 中宁网站建设哈尔滨市营商环境建设监督局网站
  • PWN手成长之路-05-ROP
  • 随机采样研究随笔
  • Python 正则表达式实战:一文搞定文本处理
  • 9月30号
  • 网站设计一般多少钱西安做网站建设哪家好
  • 分类网站 制作《语文建设》网站
  • 为什么用Vue做网站的很少详情页设计教程
  • 成都网站建设有名的公司php网站开发教案
  • 有哪些公司的网站设计的好温州网站排名团队
  • 怎么做网络推广网站北京确诊病例活动轨迹公布
  • 信息产业部 备案网站建设网站是做什么