基本图示
本文是在 Linux 环境下使用 C 语言实现 TCP 协议的 C/S 精简模型的相关笔记,以下是基本模型示意图。
基本环境: CentOS 7.4,GCC 4.8.5 (使用C99标准),VIM文本编辑器
服务端代码
注:为了首次接触网络编程能够更好的理解各个步骤在做什么,所以以下代码在某些地方违背了C语言的编写规则,在不同的环境下直接编译可能会报错(我编译通过),在实际编写过程应该遵守相关约定。
#include <stdio.h>
#include <strings.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <ctype.h>
#define SERV_PORT 10086 //定义服务端监听端口
int main(void)
{
struct sockaddr_in serv_addr; //服务器地址结构变量
int sfd; //服务端文件描述符,用于绑定
// 1、创建socket
sfd = socket(AF_INET, SOCK_STREAM, 0); //参数依次为:ipv4地址族,流式协议,默认协议(TCP)
// 构造结构变量内ip,port信息
bzero(&serv_addr, sizeof(serv_addr)); //清空栈空间数据
serv_addr.sin_family = AF_INET; //ipv4地址族
serv_addr.sin_port = htons(SERV_PORT); //网络字节序格式端口号,TCP/10086
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY)