上一篇文章介绍了 TCP/IP相关协议,socket通信流程和涉及到的各种函数:
Socket简单理解
本篇将具体解释tcp客户端服务器编程模型相关的代码
文章分为4个部分:
1. TCP客户端服务器编程模型流程图
2. 网络字节序与主机字节序
3. TCP编程的地址结构
4. 详细案例代码及解释
一: TCP客户端服务器编程模型流程图
上面两张图片将整个流程已经说明的很清楚了;
二: 网络字节序与主机字节序
字节序即是保存数据的方向方式, 分为 大端存储 和 小端存储;
其中 网络字节序 使用的是大端存储, 而我们用的主机字节序默认采用的小端存储
所以在我们进行网络编程的过程中还需要对相应的数据(地址 端口)进行字节序转换
下面是几个字节序的转换函数:
每个函数都它特定的意思 比如第一张图中的 第一个函数htonl 还有第二张图中的ntop
字符 | 含义 |
---|---|
h | host(主机) |
to | to |
n | network |
l | long |
p | pointer |
这样就很好记忆了
三: TCP编程的地址结构
第一个是通用的地址结构
第二个则是封装过的
这两个数据类型可以相互转换
四: 详细案例代码及解释
下面给出一个案例的代码.完成如下功能:
服务器接收来自客户端的连接, 服务器在屏幕输出客户端的地址;
并向客户端发送当前的时间, 客户端再向屏幕输出时间.
服务端代码:
//tcp_server.c
#include <netdb.h>