写在前面:学习本系列需要具备网络基础、socket编程、多进程、多线程等前置知识,如果您对以上前置知识不怎么了解,请先去学习以上前置知识后再来阅读本文,废话不多说我们开始,完整代码戳这里
我们做一个服务简单一点的服务器,客户端先向服务端发送一个字符串,然后等待服务端返回的消息,循环十次后客户端断开连接;服务端等待客户端发来的消息,每收到一条消息,就向该客户端返回一条消息。
首先,我们先准备两个后面会用到的头文件,它们是日志相关的log.h和定义一些服务端和客户端都要用到的公共头文件public_head.h,代码如下
//log.h
#ifndef __LOG_H
#define __LOG_H
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
typedef enum {
SC_LOG_NONE = 0,
SC_LOG_EMERGENCY,
SC_LOG_ALERT,
SC_LOG_CRITICAL,
SC_LOG_ERROR,
SC_LOG_WARNING,
SC_LOG_NOTICE,
SC_LOG_INFO,
SC_LOG_DEBUG,
SC_LOG_LEVEL_MAX,
} log_level;
inline FILE *open_logfile(const char *path)
{
return fopen(path, "a+");