#TCP网络编程

一、TCP介绍、编程流程

1.1 TCP介绍、编程流程

TCP回顾:

       1、面向连接的流式协议;可靠、出错重传、且每收到一个数据都要收到一个数据要给出相应的确认

        2、通信之前需要建立连接

        3、服务器被动连接

TCP与UDP的差异

         

二、TCP编程——socket

2.1 TCP套接字创建 

三、TCP客户端——connect、send、recv

3.1 connect

3.2 send

注意:

        不能用TCP协议发送0长度的数据包(UDP可以)

3.3 recv

客户端:

四、TCP服务器——bind、listen、accept

4.1 作为TCP服务器需要具备的条件

        1、具备一个可以确认可以知道的地址

        2、让操作系统知道一个是服务器,而不是客户端

        3、等待连接的到来

对于面向连接来的TCP协议来说,连接的建立才是真正以为着数据通信的开始

4.2 bind

4.3 listen

int listen(int sockfd , int backlog );
功能:
        将套接字由主动修改为被动
        使操作系统为该套接字设置一个连接队列,用来记录所有连接到该套接字的连接
参数:
        sockfd: socket 监听套接字
        backlog:连接队列的长度
返回值:
        成功:返回 0
        失败:其他
头文件:
        #include <sys/socket.h>

4.4 accept

阻塞等待客户端的链接

注意:

        accept之前包括accept都是用的sockfd的返回值,accept之后通信的时候用的是accept的返回值

服务器端:

五、TCP编程——close、三次握手、四次挥手

5.1 close 关闭套接字

1 、使用 close 函数即可关闭套接字
        关闭一个代表已连接套接字将导致另一端接收到一个 0 长度的数据包
2 、做服务器时
        1>关闭监听套接字将导致服务器无法接收新的连接,但不会影响已经建立的连接
        2>关闭 accept 返回的已连接套接字将导致它所代表的连接被关闭,但不会影响服务器的监听
3、做客户端时
        关闭连接就是关闭连接,不意味着其他

5.2 三次握手

连接:

5.3 四次挥手

关闭:

六、TCP并发服务器

TCP不能实现并发的原因:

        由于TCP服务器端有两个读阻塞函数,accept和recv,两个函数需要先后运行,所以导致运行一个函数的时候另一个函数无法执行,所以无法保证一边连接客户端,一边与其他客户端通信。

6.1 多进程实现并发

6.2 多线程实现并发

七、web服务器介绍

7.1 web服务器简介

web服务器又称为www服务器、网站服务器。

特点:

        1、使用HTTP协议栈与客户机浏览器进行信息交流

        2、不仅能存储信息,还能在用户通过web浏览器提供的信息的基础上运行脚本和程序

        3、该服务器可安装在UNIX、Linux或者Windows等操作系统上

        4、著名的服务器有Apache、Tomcat、IIS等

7.2 HTTP协议

7.2.1 webserver——HTTP协议

概念

        一种详细规定了浏览器和万维网服务器之间的互相通信规则,通过因特网传送万维网文档的数据传送协议。也就是超文本传输协议。

特点:

        1、支持C/S架构

        2、简单快速:客户像服务器请求服务时,只需要传送请求方法和路径,常用方法GET、POST

        3、无连接:限制每次连接只处理一个请求

        4、无状态:即如果后续处理需要前面的信息,它必须重传,这样可能导致每次连接传送的数据量会增大

7.2.2 Webserver 通信过程

八、web编程开发

网页浏览(使用 GET 方式)
客户端浏览器请求:
格式:
服务器收到的数据:
服务器应答的格式:请求成功
服务器应答的格式:请求失败
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值