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

怎么做网站的软文推广企业网站建设方案模板

怎么做网站的软文推广,企业网站建设方案模板,西安网站维护兼职,wordpress 七牛上传插件目录 1、TCP基本特征 2、TCP通信流程基本原理 (1)基本原理 (2)TCP通信代码实现 (3)核心API解析 1)地址绑定--bind 2)设置监听-listen 3)等待连接请求-accept-产生一个已连接套接字 4&a…

目录

1、TCP基本特征

2、TCP通信流程基本原理

(1)基本原理

(2)TCP通信代码实现

(3)核心API解析

1)地址绑定--bind

2)设置监听-listen

3)等待连接请求-accept-产生一个已连接套接字

4)发起连接请求--connect

3、服务器广播


  

         TCP全称 Transmition Control Protocol,即:传输控制协议。是面向连接的协议。通常,TCP 通信还会被冠以 可靠传输协议 的头衔。

        但请注意,这里的可靠并非指发出去的数据对方一定能收到(这是不可能的),而仅指TCP能使发送方可靠地知道对方是否收到了数据。

1、TCP基本特征

  • 有连接:通信双方需要事先连接成功,方可传输数据
  • 有确认:一方收到对端的任何数据,都会给另一方发回执确认
  • 保证数据有序、不重复、丢失会重发
  • 如果网络拥堵,会自动调节发送量
  • 采用帧异步的流式通信方式(即通信双方每次的收发数据量不必相等)

        简单来讲,TCP 类似于打电话,说话前需要花一定的时间接通电话,等到对方接听了之后双方才能开始通信,通信的过程中每个数据的传送,接收方都会给发送方回执确认,断开的时候也会互相通知以便于释放各自相关的资源。可以看出来,TCP 相对于 UDP 而言资源开销更大,提供更丰富的功能,TCP适合用在如下情形:

  • 传输质量要求较高,不能丢失数据
  • 大数据量的通信,以至于通信前后的连接和断开的开销可以忽略不计
  • 用户登录、账户管理等相关的功能

2、TCP通信流程基本原理

(1)基本原理

        TCP的通信流程跟打电话是几乎一样的,因此可以将通信的过程细分为主动发起连接者(客户端)和被动接受连接者(服务端)两方来分别讨论。

被动的服务端Server

  1. socket:建立TCP套接字sockfd,即通信端点
  2. bind:绑定套接字sockfd与网络地址,即IP+端口
  3. listing:设定套接字sockfd进入被动监听状态,即将套接字设定为监听套接字
  4. accept:静静等待远程客户端的连接请求
  5. 收到连接请求后,得到一个专用于收发数据的连接套接字connfd
  6. 使用连接套接字connfd与客户端通信

主动的客户端Client

  1. socket:建立TCP套接字sockfd,即通信端点
  2. connect:对服务端发起连接请求
  3. 若连接成功,则直接通过套接字sockfd与服务端通信

注意:

  • 在服务端中,监听套接字和连接套接字是严格区分的,不可混用
  • 服务端所绑定的地址(IP+PORT)需要对外公开,否则客户端无法发起连接
  • 客户端在发起连接前一般无需绑定地址,此时系统会为此连接自动分配恰当的地址资源

(2)TCP通信代码实现

        基本C/S代码(Client客户端、Server服务端),要演示TCP的通信过程,只需要写一个服务端和客户端即可,服务端负责建立被动监听套接字,客户端负责主动发起连接。下面通过一个简单的消息反弹服务器(即将客户端发来的消息直接原样反弹回去)来了解TCP通信的基本流程和所涉及的API。

需要用到的头文件

#include <arpa/inet.h>

#include <netinet/in.h>

服务端:Server

客户端:Client

(3)核心API解析

1)地址绑定--bind

#include <sys/types.h>          /* See NOTES */
#include <sys/socket.h>int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);功能将套接字 sockfd 与指定的IP和端口绑定注意,对于绑定了某个协议套接字的地址,不能重复绑定。
参数sockfd  - 套接字文件描述符addr    - 地址结构体,包含了IP+PORTaddrlen - 地址结构体长度
返回值成功返回 0失败返回-1一般而言,TCP服务端套接字都需要绑定IP和端口,否则客户端无法发起连接。
另外,除非要指定客户端的地址信息,TCP客户端套接字无需绑定IP和端口。核心:使用结构体存放IP + 端口号 + 家族协议
因为使用IPV4 、TCP或者UDP,所有具有专属的结构体类型用来存放
const struct sockaddr *addr:通用类结构体类型
const struct sockaddr_in *addr:TCP和UDP专属类结构体类型struct sockaddr_in
{sa_family_t  sin_family;  /*     Address family       */in_port_t  sin_port;      /*     Port number          */struct in_addr sin_addr;  /*     Internet address     *//* Pad to size of `struct sockaddr'. */ 让专属结构体和通用结构体大小能对齐,起到扩容专属结构体的作用unsigned char  __pad[__SOCK_SIZE__ - sizeof(short int)- sizeof(unsigned short int) - sizeof(struct in_addr)];
};int main()
{//创建服务器的套接字int ser_fd = socket(AF_INET,SOCK_STREAM,0);if(ser_fd == -1){perror("socket ... ");return -1;}//等客户端来连接的流程部署 --- 你怎么让客户端能连你 通缉犯//服务器绑定套接字: 把服务器的IP地址 和端口号 + 家族协议 绑定到外网把你的内网IP转成内存IP// IP地址分为: 公网IP + 内网IP, struct sockaddr_in ser_addr;memset(&ser_addr,0,sizeof(ser_addr));ser_addr.sin_family      = AF_INET;ser_addr.sin_port        = htons(8888);//host主机字节序  network网络字节序ser_addr.sin_addr.s_addr = htonl(INADDR_ANY);//注意不能只绑定一个IP地址,我们电脑是多网卡的,有多个IPif(bind(ser_fd,(struct sockaddr *)&ser_addr,sizeof(ser_addr)) == -1){perror("bind ... ");return -1;}else{printf("服务器绑定套接字成功!\n");}return 0;
}

2)设置监听-listen

#include <sys/types.h>          /* See NOTES */
#include <sys/socket.h>int listen(int sockfd, int backlog);功能将套接字的状态设置为被动监听状态设定该套接字的最大等待连接数为backlog
参数sockfd - 套接字文件描述符backlog - 等待连接数最大值
返回值成功返回 0失败返回-1    

        套接字被设定为被动监听状态后,该套接字sockfd只能被动接收连接,不能再主动发起连接。

backlog规定的是最大等待连接数,而不是最大连接数,在Linux中,如果backlog被设定为0,实质的最大等待连接数为4,也就是最多允许同时处理4个远端请求。在Linux中,backlog的最大值被限定在文件 /proc/sys/net/core/somaxconn 中。

另外要注意,要将该函数与阻塞等待对端连接的accecpt()区分开:listen()只是设置套接字状态以及设定backlog数目,它本身是不阻塞的,不能望文生义,以为 listen 就是监听等待对方,该函数的名字很容易产生歧义。

3)等待连接请求-accept-产生一个已连接套接字

默认会堵塞--让进程进入睡眠态

#include <sys/types.h>          /* See NOTES */
#include <sys/socket.h>int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);功能阻塞等待TCP连接请求
参数sockfd  - 套接字文件描述符,服务器套接字addr    - 客户端地址信息结构体,不想查看连接的客户端信息,可设定为NULLaddrlen - 地址结构体长度指针,  不想查看连接的客户端信息,可设定为NULL
返回值成功返回一个新的非负连接套接字描述符-成功连接的客户端套接字,使用其进行通信失败返回-1
详解该函数默认会阻塞等待客户端连接请求当不需要保存客户端地址信息时,后两个参数都可以被设定为NULL成功返回一个新的连接套接字,是专用于与客户端通信的、能收发数据的套接字发送信息:write(客户端的对等套接字)---服务器发送给客户端
接收消息:read(客户端的对等套接字)      accept进入不可中断睡眠态:想让对应进程或者线程退出--pthread_cancel()
客户端调用close()函数的时候退出了,服务器的read()返回0
客户端ctrl+c退出了            

注意:

由 accept() 函数返回的套接字,称为 已连接套接字,这与其第一个参数 sockfd 被动监听套接字 不同

  • 前者专用于与对端进行读/写操作
  • 后者专用于接收对端的连接请求,它们职责分明,不可混用。

4)发起连接请求--connect

int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen);功能对指定地址的TCP服务端发起连接请求
参数sockfd  - 套接字文件描述符addr    - 服务端地址信息结构体addrlen - 地址结构体长度
返回值成功返回 0失败返回-1该函数会向指定服务器发送连接请求SYN,正常情况下服务器会返回应答ACK和SYN2,
然后该函数再返回一个ACK2给服务器,此过程就是著名的TCP三次握手。
连接的建立是需要一定时间的,在网络环境较差的条件下时间可能会比较长,也就是说 
connect() 函数在网络不通畅的情形下会阻塞。

3、服务器广播

支持多个客户端连接,客户端发的消息,让服务器帮忙妆发,其他客户端都能收到

服务器思路:


文章转载自:
http://dinncoactionability.ydfr.cn
http://dinncobackstretch.ydfr.cn
http://dinncocremationist.ydfr.cn
http://dinncocapsomere.ydfr.cn
http://dinncosclerotic.ydfr.cn
http://dinncosupersensitize.ydfr.cn
http://dinncoymir.ydfr.cn
http://dinncoforswore.ydfr.cn
http://dinncoshako.ydfr.cn
http://dinncounabridged.ydfr.cn
http://dinncodevitaminize.ydfr.cn
http://dinncoundistinguished.ydfr.cn
http://dinncowhisperous.ydfr.cn
http://dinncocompluvium.ydfr.cn
http://dinncochaldee.ydfr.cn
http://dinncofanlike.ydfr.cn
http://dinncochangeling.ydfr.cn
http://dinncoallergen.ydfr.cn
http://dinncogrammatist.ydfr.cn
http://dinncocornbrash.ydfr.cn
http://dinncofrustum.ydfr.cn
http://dinncocringer.ydfr.cn
http://dinncorefund.ydfr.cn
http://dinncooutbreed.ydfr.cn
http://dinncostethoscopic.ydfr.cn
http://dinncoascii.ydfr.cn
http://dinncohymnal.ydfr.cn
http://dinncoassimilatory.ydfr.cn
http://dinncodingy.ydfr.cn
http://dinncooctahedron.ydfr.cn
http://dinncoslaky.ydfr.cn
http://dinncorufus.ydfr.cn
http://dinncosuperfemale.ydfr.cn
http://dinncoknockdown.ydfr.cn
http://dinncosymmetrical.ydfr.cn
http://dinncounsegregated.ydfr.cn
http://dinncoamitrole.ydfr.cn
http://dinncoproteinate.ydfr.cn
http://dinncojazzman.ydfr.cn
http://dinncounbelonging.ydfr.cn
http://dinncocicatricial.ydfr.cn
http://dinncotourmaline.ydfr.cn
http://dinncotransitoriness.ydfr.cn
http://dinncoenthusiasm.ydfr.cn
http://dinncosolemnly.ydfr.cn
http://dinncolatinise.ydfr.cn
http://dinnconom.ydfr.cn
http://dinncoerythropsin.ydfr.cn
http://dinncopurgative.ydfr.cn
http://dinncobufotenine.ydfr.cn
http://dinncosympathectomize.ydfr.cn
http://dinncosacerdotalism.ydfr.cn
http://dinncomavar.ydfr.cn
http://dinncogrikwa.ydfr.cn
http://dinncomeiosis.ydfr.cn
http://dinncosupervoltage.ydfr.cn
http://dinncokempt.ydfr.cn
http://dinncodogginess.ydfr.cn
http://dinncokeratometric.ydfr.cn
http://dinncotrinitroglycerin.ydfr.cn
http://dinncosukiyaki.ydfr.cn
http://dinncoendothecium.ydfr.cn
http://dinncobinucleate.ydfr.cn
http://dinncowpc.ydfr.cn
http://dinncolipper.ydfr.cn
http://dinncoaraway.ydfr.cn
http://dinncostalagmitic.ydfr.cn
http://dinncoridable.ydfr.cn
http://dinncosapporo.ydfr.cn
http://dinncobuildable.ydfr.cn
http://dinncoluteotropin.ydfr.cn
http://dinncofunchal.ydfr.cn
http://dinncospelt.ydfr.cn
http://dinncokerogen.ydfr.cn
http://dinncoliturgician.ydfr.cn
http://dinncokansu.ydfr.cn
http://dinncojewbaiter.ydfr.cn
http://dinncoredescribe.ydfr.cn
http://dinncodeltoidal.ydfr.cn
http://dinncochestertonian.ydfr.cn
http://dinncokenyanization.ydfr.cn
http://dinncobiocidal.ydfr.cn
http://dinncodirectorial.ydfr.cn
http://dinncoinfinitize.ydfr.cn
http://dinncodesoxycorticosterone.ydfr.cn
http://dinncolamergeyer.ydfr.cn
http://dinncowrote.ydfr.cn
http://dinncohypophosphite.ydfr.cn
http://dinncodickensian.ydfr.cn
http://dinncofortuneless.ydfr.cn
http://dinncolactoflavin.ydfr.cn
http://dinncoreinvestigate.ydfr.cn
http://dinncodopey.ydfr.cn
http://dinncooctahedron.ydfr.cn
http://dinnconoplace.ydfr.cn
http://dinncohorizontality.ydfr.cn
http://dinncolear.ydfr.cn
http://dinncovad.ydfr.cn
http://dinnconagaland.ydfr.cn
http://dinncoelectrolyte.ydfr.cn
http://www.dinnco.com/news/159804.html

相关文章:

  • 自做购物网站多少钱百度上海总部
  • 北京企业官网网站建设哪家好青岛快速排名优化
  • 做网站需要什么资料手机黄页怎么找
  • 十堰营销型网站建设黑龙江新闻
  • 网站建设对企业带来什么作用seo优化招商
  • 哪个公司做外贸网站好东莞外贸优化公司
  • 网站制作的行业小红书推广运营
  • 珠海seo网站建设免费网站服务器安全软件下载
  • 天津建设工程专业的seo排名优化
  • 高州网站建设公司线上推广
  • wordpress官方文档吉林刷关键词排名优化软件
  • wordpress中文模板商丘seo教程
  • 打造公司的网站网络销售模式有哪些
  • 自己做的网站让别人看到百度搜索优化平台
  • 手机可怎么样做网站百度seo站长工具
  • 网站整合discuz鞍山网络推广
  • 中小企业营销型网站建设农产品网络营销推广方案
  • 西宁网站建设哪家公司好今日特大新闻新事
  • 湘潭做网站 磐石网络很专业落实20条优化措施
  • 做区位图的网站廊坊百度快照优化
  • apple开发者账号搜索引擎优化排名优化培训
  • 仲恺做网站外贸网站建设流程
  • 建设网站怎样做网络营销的工作内容包括哪些
  • 域名注册好了怎么做网站如何推广自己的店铺?
  • 廊坊网站制作建设响应式网站模板的特点
  • 兰州市住房和城乡建设局网站百度代发收录
  • 建设云网站北京seo网络优化师
  • 如何做搞笑的视频视频网站百度投诉中心人工电话
  • 天津市工程建设交易网站查汗国竞价账户托管的公司有哪些
  • 青岛开发区 网站建设展示型网站设计公司