微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C++网络编程之路(二):TCP通信基本流程

不管多么复杂的服务器或客户端程序,其网络通信的基本原理一定如下所述:

对于服务器,其通信流程一般有如下步骤:

1 2 3 4 5 6

1. 调用 socket 函数创建 socket(侦听socket) 2. 调用 bind 函数 将 socket绑定到某个ip和端口的二元组上 3. 调用 listen 函数 开启侦听 4. 当有客户端请求连接上来后,调用 accept 函数接受连接,产生一个新的 socket(客户端 socket) 5. 基于新产生的 socket 调用 send 或 recv 函数开始与客户端进行数据交流 6. 通信结束后,调用 close 函数关闭侦听 socket

对于客户端,其通信流程一般有如下步骤:

1 2 3 4

1. 调用 socket函数创建客户端 socket 2. 调用 connect 函数尝试连接服务器 3. 连接成功以后调用 send 或 recv 函数开始与服务器进行数据交流 4. 通信结束后,调用 close 函数关闭侦听socket

上述流程可以绘制成如下图示:

不管多么复杂的服务器或客户端程序,其网络通信的基本原理一定如下所述:

对于服务器,其通信流程一般有如下步骤:

1 2 3 4 5 6

1. 调用 socket 函数创建 socket(侦听socket) 2. 调用 bind 函数 将 socket绑定到某个ip和端口的二元组上 3. 调用 listen 函数 开启侦听 4. 当有客户端请求连接上来后,调用 accept 函数接受连接,产生一个新的 socket(客户端 socket) 5. 基于新产生的 socket 调用 send 或 recv 函数开始与客户端进行数据交流 6. 通信结束后,调用 close 函数关闭侦听 socket

对于客户端,其通信流程一般有如下步骤:

1 2 3 4

1. 调用 socket函数创建客户端 socket 2. 调用 connect 函数尝试连接服务器 3. 连接成功以后调用 send 或 recv 函数开始与服务器进行数据交流 4. 通信结束后,调用 close 函数关闭侦听socket

上述流程可以绘制成如下图示:

对于上面的图,读者可能有疑问,为什么客户端调用 close() ,会和服务器端 recv() 函数有关。这个涉及到 recv() 函数的返回值意义,我们在下文中详细讲解。

针对这一例子,有具体的实现代码

原文地址:https://cloud.tencent.com/developer/article/2028509

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐