实验二 TCP-C++

本文详细介绍了TCP协议的工作原理,包括面向连接、可靠传输和面向字节流的特点。阐述了服务端和客户端操作流程,包括创建套接字、绑定地址、监听连接、收发数据和关闭套接字等步骤,并提供了示例代码和运行结果。
摘要由CSDN通过智能技术生成

#只是记录一下实验作业

2.2 TCP程序

TCP,传输控制协议(有连接的协议)TCP通信编程是面向连接、可靠传输、面向字节流的传输层协议。面向连接,必须建立了连接且保证双方都具有数据收发的能力,才能开始通信。(UDP是无连接的,只要知道对端地址就可以直接发送消息)。可靠传输,传送的数据,无差错、不丢失、不重复、并且按序到达。面向字节流,通信方面也是分为客户端和服务端。其优点是可保证数据安全可靠。其缺点是消耗大,效率低。

一、服务端操作流程:

1.创建套接字端口:在内核中创建socket结构体,关联进程与网卡之间的联系。

2.为套接字绑定地址信息:网络通信中的数据都必须带有源端IP、源端端口、对端IP、对端端口、协议,这5个信息称为五元组。在内核创建的socket结构体中描述IP地址端口以及协议,(必须主动绑定,告诉客户端自己的地址信息,如果不绑定客户端就不知道该发往哪个服务端了)为了告诉操作系统发往哪个IP地址,哪个端口的数据是交给我来处理的。

3.开始监听:设置套接字的一个监听状态,只有处于监听状态的套接字才会接收客户端的连接请求。服务端会为每一个客户端的连接请求都创建一个新的socket结构体,通过这个新建的socket结构体与客户端进行通信。

4.获取一个新建立连接的socket的描述符:获取到socket的操作句柄,通过这个指定的socket的操作句柄与指定的客户端进行通信。

收发数据:每个新建的套接字包含了完整的五元组,知道自己与谁通信,因此收发数据的时候就不用设置地址信息了。

  1. 关闭套接字:释放资源。

二、客户端操作流程:

1.创建套接字:在内核中创建socket结构体,关联进程与网卡之间的联系。

2.为套接字绑定地址信息:描述在内核中创建的socket结构体的源端地址信息;发送的数据中源端地址信息就是绑定的地址信息(不推荐主动绑定地址,降低端口冲突的概率,从而确保数据发送的安全性)。

3.向服务端发起连接请求:当服务端处于监听状态时就可以进行连接;但是当服务端不处于监听状态,请求会丢失。

收发数据:被服务端特定套接字服务。

  1. 关闭套接字:释放资源。

三、服务端代码如下所示

运行结果如下:

四、客户端代码如下图所示:

运行结果如下图所示:

先运行服务端,后运行客户端之后就可以发信息,如下图所示:

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值