Linux下用C写的一个telnet服务器 源码

根据提供的文件信息,我们可以总结出以下相关知识点: ### Linux下的Telnet服务器开发 #### 一、文件概述 本文档提供了一份在Linux环境下使用C语言编写的简单Telnet服务器源代码。该服务器主要用于教学目的和实验环境搭建,允许用户通过网络进行远程登录与交互。 #### 二、关键库文件及功能介绍 1. **`<stdarg.h>`**:用于处理可变参数列表。 2. **`<errno.h>`**:定义了错误编号和相关宏,用于获取系统调用失败的原因。 3. **`<stdio.h>`**:标准输入输出操作。 4. **`<fcntl.h>`**:文件控制操作,如设置文件描述符标志等。 5. **`<unistd.h>`**:提供了各种Unix标准系统调用,如读写文件、进程控制等。 6. **`<string.h>`**:字符串处理函数。 7. **`<time.h>`**:时间日期相关操作。 8. **`<sys/types.h>`**:定义了各种系统数据类型。 9. **`<sys/stat.h>`**:文件状态结构体。 10. **`<dirent.h>`**:目录访问相关函数。 11. **`<sys/socket.h>`**:套接字编程接口。 12. **`<netinet/in.h>`**:Internet协议族相关定义。 13. **`<arpa/inet.h>`**:Internet地址转换函数。 14. **`<resolv.h>`**:域名解析相关操作。 15. **`<stdlib.h>`**:标准库函数,如内存分配和释放。 16. **`<signal.h>`**:信号处理函数。 17. **`<getopt.h>`**:命令行参数解析库。 #### 三、宏定义详解 1. **`DEFAULTIP`**:默认IP地址为“127.0.0.1”。 2. **`DEFAULTPORT`**:默认端口为“23”,这是标准的Telnet端口号。 3. **`DEFAULTBACK`**:默认监听队列长度为10。 4. **`DEFAULTDIR`**:默认的工作目录为“/tmp”。 5. **`DEFAULTLOG`**:默认的日志文件路径为“/tmp/telnet-server.log”。 #### 四、错误日志管理 1. **`prterrmsg`**:用于打印错误消息到标准错误输出。 2. **`wrterrmsg`**:用于将错误消息写入日志文件。 3. **`prtinfomsg`**:用于打印一般信息消息到标准输出。 4. **`wrtinfomsg`**:用于将信息消息写入日志文件。 #### 五、变量初始化 - **`MAXBUF`**:缓冲区大小定义为1024字节。 - **`buffer`**:定义了一个大小为1025字节的字符数组作为缓冲区。 - **`host`**、**`port`**、**`back`**、**`dirroot`**、**`logdir`**:这些变量用于存储命令行参数或默认值。 - **`daemon_y_n`**:是否以守护进程模式运行的标记。 #### 六、内存分配函数 - **`AllocateMemory`**:负责为指定的指针分配内存,并复制指定的数据。 #### 七、命令行选项解析 - **`getoption`**:此函数用于解析命令行参数,支持以下选项: - **`--host`**/**`-H`**:设置服务器IP地址。 - **`--port`**/**`-P`**:设置服务器端口号。 - **`--back`**/**`-B`**:设置监听队列长度。 - **`--dir`**/**`-D`**:设置工作目录。 - **`--log`**/**`-L`**:设置日志文件路径。 - **`--daemon`**:以守护进程模式运行。 #### 八、程序流程概览 1. **命令行参数解析**:根据用户提供的参数或使用默认值来初始化服务。 2. **日志文件配置**:打开或创建日志文件。 3. **网络初始化**:创建监听套接字,绑定IP地址和端口号,开始监听连接请求。 4. **客户端连接处理**:接受客户端连接请求,创建新的线程或子进程处理每个客户端会话。 5. **会话管理**:实现基本的命令解释器,处理用户输入并返回结果。 6. **错误处理**:记录并处理运行过程中出现的各种错误。 以上是基于提供的文件片段所整理的关键知识点,这份源代码虽然较为基础,但对于学习Telnet服务器开发、了解Linux下网络编程原理等方面仍然具有一定的参考价值。
















#include <stdarg.h>
#include <errno.h>
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <errno.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <resolv.h>
#include <arpa/inet.h>
#include <stdlib.h>
#include <signal.h>
#include <getopt.h>
#define DEFAULTIP "127.0.0.1"
#define DEFAULTPORT "23"
#define DEFAULTBACK "10"
#define DEFAULTDIR "/tmp"
#define DEFAULTLOG "/tmp/telnet-server.log"
void prterrmsg(char *msg);
#define prterrmsg(msg) { perror(msg); abort(); }
void wrterrmsg(char *msg);
#define wrterrmsg(msg) { fputs(msg, logfp); fputs(strerror(errno), logfp);fflush(logfp); abort(); }
void prtinfomsg(char *msg);
#define prtinfomsg(msg) { fputs(msg, stdout); }
void wrtinfomsg(char *msg);
#define wrtinfomsg(msg) { fputs(msg, logfp); fflush(logfp);}
#define MAXBUF 1024
char buffer[MAXBUF + 1];
char *host = 0;
char *port = 0;
char *back = 0;
char *dirroot = 0;
char *logdir = 0;
unsigned char daemon_y_n = 0;
FILE *logfp;
#define MAXPATH 150
/*------------------------------------------------------
*--- AllocateMemory - 分配空间并把d所指的内容复制
*------------------------------------------------------
*/
void AllocateMemory(char **s, int l, char *d)
{
*s = malloc(l + 1);
bzero(*s, l + 1);
memcpy(*s, d, l);
}
剩余8页未读,继续阅读

- 粉丝: 24
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 纯电动汽车整车MatlabSimulink仿真模型构建与应用:研一新生及本科毕设参考
- 岩土工程中FLAC3D与PFC耦合模拟滑坡案例:岩体Zone与破碎岩块Rblock建模的应用
- 电力电子学中二极管钳位三电平VSG仿真的关键技术及应用
- 基于STM32F030的永磁同步电机非线性磁链观测与无感FOC零速闭环启动控制
- 基于BM25的c++问答系统
- COMSOL压电陶瓷悬臂梁振动仿真3D模型:稳态频域研究及结构优化完整资料 COMSOL 系统版
- 岩土力学数值模拟中PFC2D配位数与偏组构曲线计算及其在密砂双轴压缩试验的应用 · 配位数与偏组构曲线
- PFC2D静力触探模拟技术:基于Fish脚本的Rblock土体建模与应力伺服方法
- PFC 5.0环境下分段高度25×30的放矿建模及其实际应用
- 基于深度调峰的电网经济运行优化方法及其在IEEE 30节点系统的应用
- Simulink模型自动化转换为PDF文档的完整解决方案:模块化导出与数据同步
- 电机控制器设计中的主动阻尼控制与转矩补偿技术——实现振动抑制与转速波动优化
- 单轮车辆ABS防抱死控制系统Simulink仿真模型及其应用 - PID控制 参考
- PFC与OpenFOAM耦合模拟流化床中稀疏颗粒乱流问题的技术解析 - 流化床
- 光储VSG虚拟同步发电机孤岛离网仿真的参数计算与控制策略复现 · 光储系统 v2.0
- 基于小波变换的信号突变点检测 MATLAB实现



- 1
- 2
- 3
- 4
前往页