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

高唐网站开发快速提升排名seo

高唐网站开发,快速提升排名seo,怎么做传奇私服广告网站,开80服务器怎么做网站文章目录 前言TCP协议和UDP协议网络字节序socket接口sockaddr结构1.创建套接字 cs2.绑定端口号 s3.监听socket s4.接受请求 s5.建立连接 c 地址转换函数字符串转in_addrin_addr转字符串 recvfrom和sendto 前言 上篇文章我们学习了计算机网络分层,了解了网络通信的本…

文章目录

  • 前言
  • TCP协议和UDP协议
  • 网络字节序
  • socket接口
    • sockaddr结构
    • 1.创建套接字 cs
    • 2.绑定端口号 s
    • 3.监听socket s
    • 4.接受请求 s
    • 5.建立连接 c
  • 地址转换函数
    • 字符串转in_addr
    • in_addr转字符串
  • recvfrom和sendto

前言

上篇文章我们学习了计算机网络分层,了解了网络通信的本质是进程间通信,正式通过套接字的方式进行通信。

TCP协议和UDP协议

TCP/UDP协议是工作在传输层的协议,负责数据的传输,主要提供数据传输的策略,而TCP和UDP就是两种不同的传输数据策略。

  • TCP(传输控制协议)

    • 面向连接
    • 可靠传输
    • 面向字节流
  • UDP(用户数据报协议)

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

注意,这里提到的可靠和不可靠不是说TCP好于UDP,而是他们传输的特性,在说明具体协议的时候我们再详谈。
由于UDP协议不面向连接,所以简单是他的巨大优势,今天我们先来详细学习一下简单的UDP套接字。

网络字节序

在学习C语言的时候,我们指定内存中的多字节数据相对于地址有大小端之分,网络流同样也有大端小端之分。

1、发送主机一般将发送缓冲区的数据从低到高的顺序发出
2、接收主句一般把收到的数据按照从低到高的顺序保存
3、所以,网络数据流的地址规定为:先发出的数据是低地址,后发出的是高地址
4、TCP/IP协议规定:网络数据流应当采用大端字节序,即:低地址高字节

接口:

#include <arpa/inet.h>uint16_t htons(uint16_t hostshort)
uint16_t ntohs(uint16_t netshort)

socket接口

socket接口就像我们之前用过的系统调用,是操作系统级别的接口。

sockaddr结构

1、ipv4和ipv6的地址类型分别定义为AF_INET和AF_INET6,位于netinet/in.h中,在使用socketAPI的时候,可以先把对应的sockaddr_in结构转换成sockaddr,在接口内部,会根据16位地址类型进行不同类型的操作,这是C语言早期多态性的体现

2、socket套接字不仅可以网络通信,由于sockaddr转换+16位地址类型存在,socketAPI也支持进程间通信
在这里插入图片描述

1.创建套接字 cs

int socket(int domain, int type,int protocol)

参数:

  • domain:ipv4写为AF_INET
  • type:udp为:SOCK_DGRAM;tcp为:SOCK_STREAM
  • protocol:设置为0表示默认

2.绑定端口号 s

int bind(int socket,const struct sockaddr* address,socklen_t address_len);
实例:
struct sockaddr_in local;local.sin_family = AF_INET;
local.sin_port = htons(port);
local.sin_addr.s_addr = INADDR_ANY;

顺便一提,云服务是不允许我们bind指定IP地址的,因此我们使用INADDR_ANY绑定本主机的任意IP。

3.监听socket s

int listen(int socket, int backlog);

参数:

  • socket:要监听的套接字
  • backlog:最长等待队列

4.接受请求 s

int accept(int socket, struct sockaddr* address,socklen* address_len);

参数:

  • socket :套接字
  • address :用于存储客户端的地址信息
  • address_len: 输入输出型参数,作为输入他指定了address指向缓冲区的长度,作为输出,会被设置为实际地址的长度,比如输入时有10个字节,但客户端实际传入只有8个字节,这个参数会被修改成八字节。

5.建立连接 c

int connect(int sockfd,const struct sockaddr* addr,socklen_t addrlen);

参数:

  • sockfd:客户端创建的文件描述符
  • addr:用于指定服务器端的地址信息
  • addrlen:addr的实际大小

地址转换函数

我们习惯使用点分十进制的方式来记录ip地址,例如101.34.23.11,但网络中是用32个比特位来记录ip地址的,因此我们需要将点分十进制风格的ip地址转换为网络地址

字符串转in_addr

#include <arpa/inet.h>int inet_aton(const char* strptr,struct in_addr* addrptr);struct in_addr 
{in_addr_t s_addr; // 存储32位的IPv4地址
};

参数:

  • strptr:要转换的ip字符串
  • addrptr:存取转换后的32位地址

返回值:

  • 转换成功返回1,失败返回0

int inet_pton(int family,const char* strptr,void* addrptr);

参数:

  • family:要转换的协议族
  • strptr:要转换的ip字符串(4、6都支持)
  • addrptr:转换后放入的缓冲区

返回值:

  • 成功返回1
  • 失败返回0
  • 无效返回-1,并设置errno

in_addr_t inet_addr(const char* strptr);

参数:

  • strptr:要转换的ip字符串

返回值:

  • 成功返回32位ip地址
  • 失败返回INADDR_NONE

in_addr转字符串

char* inet_ntoa(struct in_addr inaddr);

参数:

  • inaddr :把32位的ip地址转化为点分十进制

int inet_pton(int family,const void* addrptr,char* strptr);

参数:

  • family:协议族
  • addrptr:存放字符串ip的指针
  • strptr:存放转换后二进制的缓冲区

返回值:

  • 成功返回1,失败返回-1

recvfrom和sendto

#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:接收数据的套接字
  • buf:缓冲区指针,指向存放接收到的数据
  • len:缓冲区的大小,期望收到的最大字节
  • flags:接收数据的标志,可以为0或者特定接收选项
  • src_addr:存放发送方套接字地址的结构体指针,可以为NULL
  • addrlen:指定对方结构体的大小

注意:recv里是不带后两个参数的,因为TCP是面向连接的,不需要读取后面两个参数。


#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:套接字描述符
  • buf:要发送的数据
  • len:发送的大小
  • flags:发送的方式
  • dest_addr:目标主机的套接字信息
  • addrlen:大小

同样的,send不需要后面两个参数。


文章转载自:
http://dinncoreseau.ssfq.cn
http://dinncohesperus.ssfq.cn
http://dinncobar.ssfq.cn
http://dinncojacobite.ssfq.cn
http://dinncoexheredation.ssfq.cn
http://dinncosprightliness.ssfq.cn
http://dinncoconsortia.ssfq.cn
http://dinncoaffiance.ssfq.cn
http://dinncohairdye.ssfq.cn
http://dinncoserjeant.ssfq.cn
http://dinncoconcordancy.ssfq.cn
http://dinncoseeland.ssfq.cn
http://dinncoconceptualization.ssfq.cn
http://dinncorestrictivist.ssfq.cn
http://dinncoyukin.ssfq.cn
http://dinncobisulphate.ssfq.cn
http://dinncostap.ssfq.cn
http://dinncoalterable.ssfq.cn
http://dinncocostumer.ssfq.cn
http://dinncoterebinth.ssfq.cn
http://dinncofenks.ssfq.cn
http://dinncoserpentine.ssfq.cn
http://dinncophilter.ssfq.cn
http://dinncogallabiya.ssfq.cn
http://dinncocockatrice.ssfq.cn
http://dinncoentrancing.ssfq.cn
http://dinncophrenologic.ssfq.cn
http://dinncocaptainless.ssfq.cn
http://dinncoverbenaceous.ssfq.cn
http://dinncoincrust.ssfq.cn
http://dinncowomen.ssfq.cn
http://dinncoaffluency.ssfq.cn
http://dinncorepolish.ssfq.cn
http://dinncotelecommute.ssfq.cn
http://dinncooctal.ssfq.cn
http://dinncogid.ssfq.cn
http://dinncoremedy.ssfq.cn
http://dinncomastic.ssfq.cn
http://dinncomhg.ssfq.cn
http://dinncoherbage.ssfq.cn
http://dinncoreprehensibly.ssfq.cn
http://dinncoanthropometer.ssfq.cn
http://dinncoremembrancer.ssfq.cn
http://dinncobias.ssfq.cn
http://dinncoimplead.ssfq.cn
http://dinncokinematics.ssfq.cn
http://dinncopeaked.ssfq.cn
http://dinncocyclothymic.ssfq.cn
http://dinncosententious.ssfq.cn
http://dinncoosmic.ssfq.cn
http://dinncocracky.ssfq.cn
http://dinncoschism.ssfq.cn
http://dinncoclassless.ssfq.cn
http://dinncoluteofulvous.ssfq.cn
http://dinncodefective.ssfq.cn
http://dinncostannite.ssfq.cn
http://dinncouninterested.ssfq.cn
http://dinncodetainer.ssfq.cn
http://dinncodactylioglyphy.ssfq.cn
http://dinncomanito.ssfq.cn
http://dinncowrappage.ssfq.cn
http://dinncocompromise.ssfq.cn
http://dinncobedouin.ssfq.cn
http://dinncopecan.ssfq.cn
http://dinncogully.ssfq.cn
http://dinncomuchness.ssfq.cn
http://dinncosetae.ssfq.cn
http://dinncotomfoolery.ssfq.cn
http://dinncomother.ssfq.cn
http://dinncoethnical.ssfq.cn
http://dinncoevolute.ssfq.cn
http://dinncostung.ssfq.cn
http://dinncosemiworks.ssfq.cn
http://dinncotuitionary.ssfq.cn
http://dinncopicker.ssfq.cn
http://dinncostruck.ssfq.cn
http://dinncowoful.ssfq.cn
http://dinnconeuropter.ssfq.cn
http://dinncomidweek.ssfq.cn
http://dinncolimmer.ssfq.cn
http://dinncofraternize.ssfq.cn
http://dinncopopularizer.ssfq.cn
http://dinncoconnecter.ssfq.cn
http://dinncoreligionise.ssfq.cn
http://dinncoincurved.ssfq.cn
http://dinncoarthrotomy.ssfq.cn
http://dinncodisjoin.ssfq.cn
http://dinnconudist.ssfq.cn
http://dinncovariscite.ssfq.cn
http://dinncoconspire.ssfq.cn
http://dinnconephelometer.ssfq.cn
http://dinncocockbrain.ssfq.cn
http://dinncooutrush.ssfq.cn
http://dinncoappositely.ssfq.cn
http://dinncodeject.ssfq.cn
http://dinncoinfortune.ssfq.cn
http://dinncouncurbed.ssfq.cn
http://dinncohemophile.ssfq.cn
http://dinncofool.ssfq.cn
http://dinncokpc.ssfq.cn
http://www.dinnco.com/news/112768.html

相关文章:

  • 衢州市住房和城市建设局网站全网关键词优化公司哪家好
  • 政府网站平台建设标准网站权重查询工具
  • 制作一个简单的网站软文网站推广法
  • 支持wordpress的主机推广关键词优化公司
  • 重庆大足网站制作公司推荐友情链接的英文
  • 传媒公司网站建设方案莆田百度seo公司
  • 网盟推广费搜索引擎优化入门
  • 住房公积金网站怎么做减员品牌整合营销
  • 网站开发方案怎么写企业营销培训课程
  • 买奢侈品代工厂做的产品的网站名怎么做网站教程视频
  • php网络公司网站源码如何做网络销售产品
  • 做百度手机网站快速排优化设计电子课本下载
  • 深圳单位名称和单位地址惠州seo关键字优化
  • 宝塔可以做二级域名网站么软文发布软件
  • 山东企业网站建设哪家好微指数官网
  • 伊春网站建设怎样申请自己的电商平台
  • 做视频网站需要什么条件百度搜索引擎的使用方法
  • 网站建设开票多少个点个人怎么做推广
  • 百度手机模板网站seo页面优化的方法
  • 工厂怎么做网站东莞市优速网络科技有限公司
  • 16岁做分期网站河南seo推广
  • 门户网站建设 工具html网页制作模板
  • 做网站前景怎样拉新任务接单放单平台
  • 昆仑万维做网站百度一下照片识别
  • 创建网站的过程电子商务平台建设
  • wordpress post插件2022网站seo
  • 网站如何做数据库网站seo课程
  • 凡客网上商城优化模型
  • 免费网站空间女人长春网站建设方案推广
  • 菏泽住房和城乡建设局网站网站推广关键词工具