当前位置:首页>Linux>救命!Linux TCP编程,竟是“电脑间的高端聊天术”

救命!Linux TCP编程,竟是“电脑间的高端聊天术”

  • 2026-04-16 15:47:49
救命!Linux TCP编程,竟是“电脑间的高端聊天术”

点击蓝字

关注我们

救命!Linux TCP编程,竟是“电脑间的高端聊天术”

新手必看|告别晦涩套接字,通俗讲透客户端+服务器,马年轻松拿捏TCP通信✅

一、前言:谁懂啊!Linux TCP编程,新手一看到“套接字”就懵

刚吃透Linux网络基础的宝子们,又被“TCP编程”搞破防了:打开教程,满屏都是“套接字、bind、listen、accept”,陌生函数堆一脸;想写个简单的“电脑间聊天”程序,敲完代码要么连不上,要么收不到消息;总觉得“TCP编程是网络高手专属,新手学不会”,甚至连“TCP到底是啥”都没搞明白。

就像你想和远方的朋友视频聊天,不仅要知道对方的电话号码(IP)和房间号(端口),还要先拨通电话、等对方接听,聊完还要挂电话,一步都不能少;Linux TCP编程,本质就是给两台Linux(或电脑)搭一个“高端聊天通道”,让它们能按规矩收发消息,不慌不乱、不丢数据,而那些晦涩的函数,就是“拨号、接听、挂电话”的操作步骤。

今天就用最接地气、最风趣的话,把Linux TCP编程讲透,不搞复杂协议底层,不堆晦涩理论,只讲“TCP是什么、编程步骤是什么、客户端和服务器怎么写”,搭配生活化类比和注释拉满的实操代码,全程无多余内容,新手跟着学,马年轻松拿捏Linux TCP编程,再也不用怕“套接字”!

二、先搞懂:TCP编程,本质就是“电脑间的规矩聊天”

2.1 核心定义:TCP = 电脑间的“靠谱聊天协议”

先破除新手恐惧:TCP不是什么高深技术,而是一种“聊天规矩”,全名叫传输控制协议,相当于两台电脑聊天时的“礼仪手册”,规定了“怎么拨号、怎么接听、怎么发消息、怎么确认收到、怎么挂电话”,核心就是“靠谱、不丢消息、不乱序”。

还是用“视频聊天”的类比,新手不用死记硬背,一眼就能懂:

1.  TCP的“靠谱”:就像你和朋友视频聊天,你说一句话,朋友会回应“我听到了”,如果朋友没听到,你会再重复一遍,直到对方听到为止;TCP也是一样,发送方发消息,接收方会回复“确认收到”,没收到就重发,保证消息不丢失、不遗漏。

2.  TCP的“有序”:就像你和朋友聊天,你先问“吃了吗”,再问“在干嘛”,朋友会按你说话的顺序回应,不会先回答“在干嘛”再回答“吃了吗”;TCP发送的消息,接收方会按发送顺序接收,不会乱序。

3.  TCP编程:就是用Linux C语言,按照TCP的“聊天规矩”,写两个程序——一个“服务器”(相当于守在电话旁的人,随时等别人拨号),一个“客户端”(相当于主动拨号的人,找服务器聊天),让它们能互相收发消息。

补充一句:我们平时用微信、浏览网页、下载文件,背后都是TCP在帮忙,它就像一个“隐形的聊天助手”,帮我们保证消息靠谱传递,只是我们平时看不到而已;而Linux TCP编程,就是自己动手写这个“隐形助手”,实现简单的电脑间通信。

2.2 灵魂拷问:为什么一定要学Linux TCP编程?

新手最头疼的问题:我平时写代码、练命令,不用TCP编程也能干活,为什么非要学?其实不是不能干活,而是遇到“多设备通信”的场景,就会彻底卡壳,就像你想和朋友视频聊天,却不知道怎么拨号、怎么接听,只能对着手机发呆:

举个实操场景(新手能懂的简单例子):你想写一个“局域网聊天工具”,让两台Linux能互相发消息;你想写一个简单的网页服务器,让别人能通过浏览器访问你的页面;你想实现“远程控制”,用一台电脑操控另一台Linux——这些操作,都离不开TCP编程,不懂TCP,就没法实现多设备间的靠谱通信。

核心原因总结(新手记这3点就够):

1.  实现多设备通信:让两台或多台Linux(或电脑)互相收发消息,实现协同工作;

2.  开发网络程序:不管是聊天工具、网页服务器,还是远程控制程序,核心都是TCP编程;

3.  夯实网络基础:学TCP编程,能让你更懂Linux网络(IP、端口),为后续学高并发、服务器开发打基础。

小结:Linux TCP编程,就是“电脑间的靠谱聊天术”,学会它,你就能自己写网络程序,实现多设备通信,不用再局限于“单台电脑写代码”,真正发挥Linux的网络优势。

三、新手必懂:TCP编程核心流程,马年一看就会

很多新手觉得“TCP编程很难”,其实一点都不难,它的核心流程就像“打电话”,分两大端——服务器端(守电话)和客户端(拨电话),步骤固定,就像按剧本走流程,新手记住流程,就能轻松写代码。

重点说明:不搞复杂底层原理,只讲新手必须懂的核心流程,不用纠结“为什么要这么做”,先记住“步骤是什么”,后续进阶再深入理解;所有流程都用“打电话”类比,通俗好记。

3.1 服务器端:守在电话旁,随时等别人拨号

服务器端的作用,就像一个人守在电话旁,随时等待别人拨号、接听电话、聊天,最后挂电话,核心流程就4步,一步都不能少,就像“开机→守机→接电话→挂电话”:

1.  创建套接字(socket):相当于“打开手机”,只有打开手机,才能接收别人的拨号,这是TCP编程的第一步,没有套接字,就没法进行后续所有操作;

2.  绑定IP和端口(bind):相当于“给手机设置电话号码(IP)和房间号(端口)”,让别人知道该拨哪个号码、找哪个房间,才能找到你;

3.  监听连接(listen):相当于“打开手机铃声,守在电话旁”,告诉系统“我准备好了,随时可以接电话”,等待客户端拨号;

4.  接受连接(accept):相当于“接听电话”,当有客户端拨号时,接受连接,建立“聊天通道”,之后就能和客户端收发消息了。

简单总结:服务器端流程 = 打开手机(socket)→ 设置号码(bind)→ 守机(listen)→ 接电话(accept),全程按顺序来,不跳步、不遗漏。

3.2 客户端:主动拨号,找服务器聊天

客户端的作用,就像一个人主动给服务器拨号、等待接听、聊天、挂电话,核心流程比服务器端简单,只有3步,就像“打开手机→拨号→挂电话”:

1.  创建套接字(socket):和服务器端一样,相当于“打开手机”,没有手机,没法拨号;

2.  连接服务器(connect):相当于“拨号”,输入服务器的IP地址和端口,主动连接服务器,等待服务器接听;

3.  收发消息(read/write):相当于“聊天”,连接建立后,就能给服务器发消息,也能接收服务器的消息,聊完之后关闭连接。

简单总结:客户端流程 = 打开手机(socket)→ 拨号(connect)→ 聊天(read/write),步骤比服务器端少一步,重点是“主动连接服务器”。

补充一句:服务器端和客户端的流程,就像“守电话”和“拨电话”,必须配合使用——服务器端先启动,做好“守机”准备,客户端再启动,拨号连接,不然客户端会拨号失败,就像你给别人打电话,别人没开机,你就打不通。

四、新手必备:TCP编程实操代码,马年直接抄作业

Linux TCP编程,核心就是“按流程写代码”,新手不用自己琢磨,直接抄下面的代码,注释拉满,每一步都对应前面的流程,编译后就能运行,实现“客户端发消息、服务器收消息”的简单通信,全程无难度。

重点说明:代码分为“服务器端”和“客户端”两个文件,用Linux C语言编写,编译命令单独标注,新手直接复制代码、编译运行,就能看到效果;所有代码都适配新手,没有复杂逻辑,只保留核心功能。

4.1 服务器端代码(server.c):守电话的人

服务器端代码,严格按照“socket→bind→listen→accept→read/write”的流程编写,注释拉满,新手能看懂每一步的作用,直接抄就行:

```Plain Text

#include <stdio.h>

#include <unistd.h>

#include <string.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <arpa/inet.h>

int main() {

   int server_fd, client_fd;

   struct sockaddr_in server_addr, client_addr;

   socklen_t client_addr_len = sizeof(client_addr);

   char buf[1024] = {0};

   // 1. 创建套接字(打开手机)

   // AF_INET:IPv4协议,SOCK_STREAM:TCP协议,0:默认协议

   server_fd = socket(AF_INET, SOCK_STREAM, 0);

   if (server_fd == -1) {

       printf("套接字创建失败,相当于手机打不开~\n");

       return 1;

   }

   // 2. 绑定IP和端口(设置电话号码和房间号)

   server_addr.sin_family = AF_INET; // IPv4协议

   server_addr.sin_port = htons(8888); // 端口号8888(房间号),htons转换字节序

   server_addr.sin_addr.s_addr = INADDR_ANY; // 绑定所有本机IP(任意电话都能打通)

   if (bind(server_fd, (struct sockaddr*)&server_addr, sizeof(server_addr)) == -1) {

       printf("绑定IP和端口失败,相当于电话号码设置错了~\n");

       close(server_fd);

       return 1;

   }

   // 3. 监听连接(打开铃声,守电话)

   // 第二个参数:最大等待连接数,新手设为5即可

   if (listen(server_fd, 5) == -1) {

       printf("监听失败,相当于手机铃声没打开~\n");

       close(server_fd);

       return 1;

   }

   printf("服务器已启动,正在监听8888端口,等待客户端拨号...\n");

   // 4. 接受连接(接听电话)

   client_fd = accept(server_fd, (struct sockaddr*)&client_addr, &client_addr_len);

   if (client_fd == -1) {

       printf("接受连接失败,相当于没接到电话~\n");

       close(server_fd);

       return 1;

   }

   // 打印客户端信息(谁给我打的电话)

   printf("客户端已连接,IP:%s,端口:%d\n",

          inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port));

   // 5. 收发消息(聊天)

   while (1) {

       // 清空缓冲区,避免旧消息干扰

       memset(buf, 0, sizeof(buf));

       // 读取客户端发送的消息

       int read_len = read(client_fd, buf, sizeof(buf));

       if (read_len == -1) {

           printf("读取消息失败~\n");

           break;

       } else if (read_len == 0) {

           printf("客户端已断开连接,聊天结束~\n");

           break;

       }

       // 打印客户端消息

       printf("客户端:%s\n", buf);

       // 给客户端回复消息

       char msg[] = "收到啦!我是服务器~";

       write(client_fd, msg, strlen(msg));

   }

   // 6. 关闭连接(挂电话)

   close(client_fd);

   close(server_fd);

   return 0;

}

```

编译命令(新手必记):gcc server.c -o server(直接编译,不用加额外参数)

运行方法:终端敲 ./server,服务器就会启动,监听8888端口,等待客户端连接,就像守在电话旁等待拨号。

4.2 客户端代码(client.c):拨电话的人

客户端代码,严格按照“socket→connect→read/write”的流程编写,注释拉满,新手直接抄,注意修改服务器IP地址(和自己的Linux IP一致):

```Plain Text

#include <stdio.h>

#include <unistd.h>

#include <string.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <arpa/inet.h>

int main() {

   int client_fd;

   struct sockaddr_in server_addr;

   char buf[1024] = {0};

   // 1. 创建套接字(打开手机)

   client_fd = socket(AF_INET, SOCK_STREAM, 0);

   if (client_fd == -1) {

       printf("套接字创建失败,手机打不开~\n");

       return 1;

   }

   // 2. 连接服务器(拨号)

   server_addr.sin_family = AF_INET; // IPv4协议

   server_addr.sin_port = htons(8888); // 服务器端口号(和服务器一致,都是8888)

   // 服务器IP地址,替换成你自己的Linux IP(用ip addr命令查看)

   server_addr.sin_addr.s_addr = inet_addr("192.168.1.100");

   if (connect(client_fd, (struct sockaddr*)&server_addr, sizeof(server_addr)) == -1) {

       printf("连接服务器失败,拨号打不通(检查IP和端口是否正确)~\n");

       close(client_fd);

       return 1;

   }

   printf("已连接服务器,开始聊天吧(输入exit退出)~\n");

   // 3. 收发消息(聊天)

   while (1) {

       // 清空缓冲区

       memset(buf, 0, sizeof(buf));

       // 输入要发送的消息

       printf("客户端:");

       fgets(buf, sizeof(buf), stdin);

       // 去掉fgets自带的换行符

       buf[strlen(buf)-1] = '\0';

       // 如果输入exit,退出聊天

       if (strcmp(buf, "exit") == 0) {

           printf("正在断开连接...\n");

           break;

       }

       // 发送消息给服务器

       write(client_fd, buf, strlen(buf));

       // 读取服务器的回复

       memset(buf, 0, sizeof(buf));

       read(client_fd, buf, sizeof(buf));

       printf("服务器:%s\n", buf);

   }

   // 4. 关闭连接(挂电话)

   close(client_fd);

   return 0;

}

```

编译命令(新手必记):gcc client.c -o client(直接编译,不用加额外参数)

运行方法:先启动服务器(./server),再打开一个新终端,敲 ./client,就能连接服务器,输入消息就能和服务器聊天,输入exit就能断开连接,就像拨电话、聊天、挂电话一样简单。

小提醒:客户端代码中的服务器IP地址(192.168.1.100),一定要替换成你自己的Linux IP(用ip addr命令查看),不然会连接失败,就像拨号拨错了号码。

五、避坑指南:新手写TCP编程,别再踩这些坑

5.1 陷阱1:服务器没启动,先启动客户端,导致连接失败

新手最容易犯的错:先启动客户端,再启动服务器,结果客户端报错“连接失败”,以为自己代码写错了,其实是服务器还没“守机”,客户端拨号没人接,就像你给别人打电话,别人还没开机,你肯定打不通。

避坑妙招:严格按顺序启动——先启动服务器(./server),看到“等待客户端拨号”的提示后,再启动客户端(./client),这样才能连接成功。

5.2 陷阱2:客户端IP地址写错,导致连接失败

很多新手复制客户端代码后,不修改服务器IP地址,还是用默认的192.168.1.100,结果连接失败,其实是IP地址写错了,就像拨号拨错了号码,肯定打不通。

避坑妙招:先用ip addr命令,查看自己Linux的IP地址,再把客户端代码中的inet_addr("192.168.1.100"),替换成自己的IP地址,确保IP正确。

5.3 陷阱3:端口被占用,导致服务器绑定失败

新手启动服务器时,经常报错“绑定失败”,其实是8888端口被其他程序占用了,就像你想给手机设置电话号码,结果这个号码已经被别人用了,没法设置。

避坑妙招:用netstat -tuln 或 ss -tuln命令,查看8888端口是否被占用;如果被占用,要么关闭占用端口的程序,要么把服务器和客户端的端口号(htons(8888))改成其他未被占用的端口(比如8080)。

5.4 陷阱4:忘记关闭套接字,导致资源浪费

新手写代码时,经常忘记在最后关闭server_fd和client_fd,导致套接字资源一直被占用,时间长了,系统会越来越卡,就像你聊完电话不挂,一直占用线路,别人没法拨号。

避坑妙招:记住“打开套接字,用完必关闭”,在代码最后,一定要用close()函数关闭服务器和客户端的套接字,一步都不能少。

5.5 陷阱5:分不清服务器和客户端流程,跳步编写代码

新手容易混淆服务器和客户端的流程,比如服务器端没写listen,就直接写accept,或者客户端没写connect,就直接写read/write,导致代码报错,就像你没打开手机铃声,就想接电话,肯定接不到。

避坑妙招:牢记流程,服务器端按“socket→bind→listen→accept”顺序,客户端按“socket→connect”顺序,不跳步、不遗漏,按流程写代码,就能避免报错。

六、结尾:TCP编程不难学,马年轻松玩转网络编程

看到这里,是不是觉得Linux TCP编程一点都不难?其实它就是“电脑间的靠谱聊天术”,核心就是服务器端和客户端的固定流程,代码可以直接抄,只要记住“守电话”和“拨电话”的类比,就能轻松理解,不用怕晦涩的套接字和函数。

新手不用怕,刚开始不用追求复杂的TCP逻辑,先掌握“客户端发消息、服务器收消息”的简单通信,能成功运行代码、看到效果,就足够了。学会TCP编程,你就能自己写简单的网络程序,实现多设备通信,不管是做项目还是学运维、服务器开发,都能更高效、更省心。

记住,TCP编程是Linux网络编程的核心,也是后续学习高并发、Socket进阶、服务器开发的基础,学会它,能让你对Linux网络的理解更上一层楼,离“Linux高手”又近了一步。

2026丙午马年,愿你吃透Linux TCP编程,轻松实现电脑间的靠谱通信,不踩坑、不懵圈,编写网络程序一马当先,早日实现“Linux网络编程自由”!

✨ 关注我,下期解锁更多,新手也能轻松拿捏Linux ✨

扫码关注我们

知识奇妙世界

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-17 10:53:41 HTTP/2.0 GET : https://f.mffb.com.cn/a/485340.html
  2. 运行时间 : 0.085044s [ 吞吐率:11.76req/s ] 内存消耗:4,475.87kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=6ebe8d0c4d5abe2b2cdaad1d604bf8c0
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000584s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000823s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000316s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000290s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000492s ]
  6. SELECT * FROM `set` [ RunTime:0.000200s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000531s ]
  8. SELECT * FROM `article` WHERE `id` = 485340 LIMIT 1 [ RunTime:0.000424s ]
  9. UPDATE `article` SET `lasttime` = 1776394421 WHERE `id` = 485340 [ RunTime:0.007416s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000246s ]
  11. SELECT * FROM `article` WHERE `id` < 485340 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000464s ]
  12. SELECT * FROM `article` WHERE `id` > 485340 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000520s ]
  13. SELECT * FROM `article` WHERE `id` < 485340 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001039s ]
  14. SELECT * FROM `article` WHERE `id` < 485340 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000737s ]
  15. SELECT * FROM `article` WHERE `id` < 485340 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000717s ]
0.086881s