C++实现基于TCP协议简单通信的服务端与客户端

本文介绍了使用C++实现基于TCP协议的简单服务端和客户端通信的基本步骤,包括TCP连接的三次握手和四次挥手过程。通过创建socket,绑定端口,监听,连接,读写等操作,展示了网络进程中如何利用socket进行通信。并提供了服务端、客户端及makefile的代码示例。
摘要由CSDN通过智能技术生成

前段时间复习了TCP协议相关知识,整理了一下之前所做的练习,一个很简单的服务端和客户端程序,虽然简单,但是对于刚接触的人来说还是很有意思。

前言

我们知道,TCP协议能够在网络通信中提供可靠的传输,其主要依靠的是TCP协议连接时的三次握手,断开时的四次挥手,以及超时重传,滑动窗口,拥塞控制的特质。
那么,网络中的进程之间是如何通信的呢?进程是通过socket来通信的;那socket又是什么呢?socket即是一种特殊的文件,一些socket函数就是对其进行的操作,操作包括读/写,打开,关闭等,socket正好提供了网络通信的接口。以TCP协议通信的socket为例,其通信的大概流程图如下:
TCP交互流程

这里再简单叙述一下交互流程:

  • 首先服务器根据地址类型(ipv4,ipv6)、socket类型,协议创建socket;
  • 服务器调用bind()函数为socket绑定端口;
  • 服务器socket调用listen()开始监听端口号请求,准备随时接收客户端发来的连接;
  • 现在客户端创建socket;
  • 客户端打开socket,根据服务器的IP地址及端口号尝试connect服务器的socket;
  • 此时服务器收到请求,被动打开,开始接收客户端请求,直到客户端返回连接信息;
  • 客户端连接成功,并向服务器发送连接状态信息,服务端accept方法返回,连接成功;
  • 客户端调用write()向socket写入信息;
  • 服务端调用read()接收读取socket信息;
  • 客户端和服务端进行关闭;

    注:著名的三次握手过程发生在connect()函数调用时,而accept()的发生是在三次握手过程之后。

    下面贴出具体代码:
    Server服务器代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>

#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值