当前位置:首页>python>Python-Socket模块

Python-Socket模块

  • 2026-01-28 08:08:05
Python-Socket模块

介绍

Python中的socket模块提供了底层的网络接口,使用Python的socket模块可以实现网络上不同计算机之间的socket通信。Python中的socket实现了BSD(Berkeley Software Distribution)套接字标准。

使用socket模块建立网络通信

创建对象

创建一个socket对象,然后即可使用socket对象的方法创建连接。socket()函数的原型如下。

socket( family, type, proto) 

其参数含义如下。

  • family 地址系列,可选参数。默认为AF_INET,也可以是AF_INET6或AF_UNIX。
  • type socket类型,可选参数。默认为SOCK_STREAM。
  • proto 协议类型,可选参数。

绑定对象

可以使用socket对象的bind方法绑定IP地址和端口。bind方法的原型如下。

bind(address) 

其参数含义如下。

  • address 由IP地址和端口组成的元组,如“(‘127.0.0.1’,1051)”。如果IP地址为空,则表示本机。

监听连接

使用socket对象的listen方法可以监听由socket对象创建的连接。其函数原型如下。

listen(backlog) 
  • 其参数含义如下。 backlog 指定连接队列数,最小值为1,最大值由所使用的操作系统决定,一般情况下为5。

连接到服务端

使用socket对象的connect和connect_ex都可以连接到服务端,不同的是,当连接不成功时,connect将返回一个错误,而connect_ex则引发一个异常。其函数原型如下。

connect(address) 
connect_ex(address) 

其参数含义相同,如下所示。

  • address 由IP地址和端口组成的元组。

接受来自客户端的连接

使用socket对象的accept方法可以接受来自客户端的连接,accept方法将返回一个新的socket对象和客户端的地址。使用socket对象的recv和recvfrom方法都可以从socket对象获取数据,不同的是,recvfrom方法返回所接受的字符串和地址,而recv方法仅返回字符串,其原型如下。

recv(bufsize, flags) 
recvfrom(bufsize, flags) 

其参数含义相同,如下所示。

  • bufsize 指定接受缓冲区大小。
  • flags 接受标志,可选参数。

发送数据

使用socket对象的send和sendall方法都可以向已经连接的socket发送数据,不同的是,sendall将一次发送完全部数据。其原型如下。

send(string, flags) 
sendall(string, flags) 

其参数含义相同,如下所示。

  • string 所发送的数据。
  • flags 发送标志,可选参数。

一个未连接的socket发送数据

使用socket对象的sendto方法可以向一个未连接的socket发送数据,其参数原型如下。

sendto(string, flags, address) 

其参数含义如下。

  • string 所发送的数据。
  • flags 发送标志,可选参数。
  • address 由IP地址和端口组成的元组。

关联到文件对象上

使用socket对象的makefile方法可以将socket关联到文件对象上,其原型如下。

makefile(mode, bufsize) 

其参数含义如下。

  • mode 文件模式,可选参数。
  • bufsize 缓冲区大小,可选参数。

关闭连接

当完成通信后,应使用socket对象的close方法关闭网络连接。

示例

发送数据

服务端程序

#-*- coding:utf-8 -*- 
#file: server.py 
#
import tkinter 
import threading 
import socket 

classListenThread(threading.Thread):# 监听线程 
def__init__(self,edit,server):
        threading.Thread.__init__(self) 
        self.edit = edit                                # 保存窗口中的多行文本框 
        self.server = server 
defrun(self):# 进入监听状态 
while1:                                        # 使用while循环等待连接 
try:                                        # 捕获异常 
                client, addr = self.server.accept()     # 等待连接 
                self.edit.insert(tkinter.END,           # 向文本框中输出状态 
'连接来自:%s:%d\n' % addr) 
                data = client.recv(1024)                # 接收数据 
                self.edit.insert(tkinter.END,           # 向文本框中输出数据 
'收到数据:%s \n' % data) 
                client.send(str('I GOT: %s' % data).encode())   # 发送数据 
                client.close()                          # 关闭同客户端的连接 
                self.edit.insert(tkinter.END,           # 向文本框中输出状态 
'关闭客户端\n'
except:                                     # 异常处理 
                self.edit.insert(tkinter.END,           # 向文本框中输出状态 
'关闭连接\n'
break# 结束循环 

classControl(threading.Thread):# 控制线程 
def__init__(self, edit):
        threading.Thread.__init__(self) 
        self.edit = edit                                # 保存窗口中的多行文本框 
        self.event = threading.Event()                  # 创建Event对象 
        self.event.clear()                              # 清除event标志 
defrun(self):
        server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)                                                                      # 创建socket连接 
        server.bind((''1051))                         # 绑定本机1051端口 
        server.listen(1)                                # 开始监听 
        self.edit.insert(tkinter.END,'正在等待连接\n')    # 向文本框中输出状态 
        self.lt = ListenThread(self.edit,server)        # 创建监听线程对象 
        self.lt.setDaemon(True
        self.lt.start()                                 # 执行监听线程 
        self.event.wait()                               # 进入等待状态 
        server.close()                                  # 关闭连接 
defstop(self):# 结束控制进程 
        self.event.set()                                # 设置event标志 

classWindow:# 主窗口 
def__init__(self, root):
        self.root = root 
        self.butlisten = tkinter.Button(root,           # 创建组件 
                text = '开始监听', command = self.Listen) 
        self.butlisten.place(x = 20, y = 15
        self.butclose = tkinter.Button(root, 
                text = '停止监听', command = self.Close) 
        self.butclose.place(x = 120, y = 15
        self.edit = tkinter.Text(root) 
        self.edit.place(y = 50
defListen(self):# 处理按钮事件 
        self.ctrl = Control(self.edit)                  # 创建控制线程对象 
        self.ctrl.setDaemon(True
        self.ctrl.start()                               # 执行控制线程 
defClose(self):
        self.ctrl.stop()                                # 结束控制线程 
root = tkinter.Tk() 
window = Window(root) 
root.mainloop() 

客户端程序

#-*- coding:utf-8 -*- 
#file: client.py 
#
import tkinter 
import socket 
classWindow:
def__init__(self, root):# 创建组件 
        label1 = tkinter.Label(root, text = 'IP'
        label2 = tkinter.Label(root, text = 'Port'
        label3 = tkinter.Label(root, text = 'Data'
        label1.place(x = 5, y = 5
        label2.place(x = 5, y = 30
        label3.place(x = 5, y = 55
        self.entryIP = tkinter.Entry(root) 
        self.entryIP.insert(tkinter.END, '127.0.0.1'
        self.entryPort = tkinter.Entry(root) 
        self.entryPort.insert(tkinter.END, '1051'
        self.entryData = tkinter.Entry(root) 
        self.entryData.insert(tkinter.END, 'Hello'
        self.Recv = tkinter.Text(root) 
        self.entryIP.place(x = 40, y = 5
        self.entryPort.place(x = 40, y = 30
        self.entryData.place(x = 40, y = 55
        self.Recv.place(y = 115
        self.send = tkinter.Button(root, text = '发送数据', command = self.Send) 
        self.send.place(x = 40, y = 80
defSend(self):# 按钮事件 
try:                                                # 异常处理 
            ip = self.entryIP.get()                         # 获取IP 
            port = int(self.entryPort.get())                # 获取端口 
            data = self.entryData.get()                     # 获取发送数据 
            client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)                                                                      # 创建socket对象 
            client.connect((ip,port))                       # 连接服务端 
            client.send(data)                               # 发送数据 
            rdata = client.recv(1024)                       # 结束数据 
            self.Recv.insert(tkinter.END, 'Server:' + rdata .decode() + '\n')                                                               # 输出接受的数据 
            client.close()                                  # 关闭连接 
except : 
            self.Recv.insert(tkinter.END, '发送错误\n'
root = tkinter.Tk() 
window = Window(root) 
root.mainloop() 

传送文件

服务端程序

#-*- coding:utf-8 -*- 
#file: FileServer.py 
#
import tkinter 
import threading 
import socket 
import os 
classListenThread(threading.Thread):# 创建监听线程 
def__init__(self,edit,server):
        threading.Thread.__init__(self) 
        self.edit = edit                                # 保存窗口中的多行文本框 
        self.server = server 
        self.file = 'receive.txt'
defrun(self):# 进入监听状态 
while1:                                        # 使用while循环不停监听 
try:                                        # 捕获异常 
                self.client, addr = self.server.accept()    # 等待连接 
                self.edit.insert(tkinter.END,           # 向文本框中输出状态 
'连接来自:%s:%d\n' % addr) 
                self.edit.insert(tkinter.END,           # 向文本框中输出数据 
'开始接收数据:'
                file = os.open(self.file, os.O_WRONLY|os.O_CREAT    # 创建文件 
                        |os.O_EXCL|os.O_BINARY) 
while1
                    rdata = self.client.recv(1024)      # 接受数据 
ifnot rdata: 
break
                    os.write(file,rdata)                # 将数据写入文件 
                    self.edit.insert(tkinter.END,'......'# 向文本框中输出进度 
                os.close(file)                          # 关闭文件 
                self.client.close()                     # 关闭与客户端的连接 
                self.edit.insert(tkinter.END,           # 向文本框中输出状态 
'\n接收完毕,关闭客户端\n'
except:                                     # 异常处理 
                self.edit.insert(tkinter.END,           # 向文本框中输出状态 
'\n网络错误,关闭连接\n'
break# 结束循环 

classControl(threading.Thread):# 控制线程 
def__init__(self, edit):
        threading.Thread.__init__(self) 
        self.edit = edit                                # 保存窗口中的多行文本框 
        self.event = threading.Event()                  # 创建Event对象 
        self.event.clear()                              # 清除event标志 
defrun(self):
        server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)      # 创建socket连接 
        server.bind((''1051))                         # 绑定本机1051端口 
        server.listen(1)                                # 开始监听 
        self.edit.insert(tkinter.END,'正在等待连接\n')    # 向文本框中输出状态 
        self.lt = ListenThread(self.edit,server)        # 创建监听线程对象 
        self.lt.setDaemon(True
        self.lt.start()                                 # 执行监听线程 
        self.event.wait()                               # 进入等待状态 
        server.close()                                  # 关闭连接 
defstop(self):# 结束控制进程 
        self.event.set()                                # 设置event标志 

classWindow:# 主窗口 
def__init__(self, root):
        self.root = root 
        self.butlisten = tkinter.Button(root,           # 创建组件 
                text = '开始监听', command = self.Listen) 
        self.butlisten.place(x = 20, y = 15
        self.butclose = tkinter.Button(root, 
                text = '停止监听', command = self.Close) 
        self.butclose.place(x = 120, y = 15
        self.edit = tkinter.Text(root) 
        self.edit.place(y = 50
defListen(self):# 处理按钮事件 
        self.ctrl = Control(self.edit)                  # 创建控制线程对象 
        self.ctrl.setDaemon(True
        self.ctrl.start()                               # 执行控制线程 
defClose(self):
        self.ctrl.stop()                                # 结束控制线程 
root = tkinter.Tk() 
window = Window(root) 
root.mainloop() 

客户端程序

#-*- coding:utf-8 -*- 
#file: FileClient.py 
#
import tkinter 
import tkinter.filedialog 
import socket 
import os 
classWindow:
def__init__(self, root):# 创建组件 
        label1 = tkinter.Label(root, text = 'IP'
        label2 = tkinter.Label(root, text = 'Port'
        label3 = tkinter.Label(root, text = '文件'
        label1.place(x = 5, y = 5
        label2.place(x = 5, y = 30
        label3.place(x = 5, y = 55
        self.entryIP = tkinter.Entry(root) 
        self.entryIP.insert(tkinter.END, '127.0.0.1'
        self.entryPort = tkinter.Entry(root) 
        self.entryPort.insert(tkinter.END, '1051'
        self.entryData = tkinter.Entry(root) 
        self.entryData.insert(tkinter.END, 'Hello'
        self.entryIP.place(x = 40, y = 5
        self.entryPort.place(x = 40, y = 30
        self.entryData.place(x = 40, y = 55
        self.send = tkinter.Button(root, text = '发送文件', command = self.Send) 
        self.openfile = tkinter.Button(root, text = '浏览', command = self.Openfile) 
        self.send.place(x = 40, y = 80
        self.openfile.place( x = 170, y = 55
defSend(self):# 按钮事件 
try:                                            # 异常处理 
            ip = self.entryIP.get()                     # 获取IP 
            port = int(self.entryPort.get())            # 获取端口 
            filename = self.entryData.get()             # 获取发送数据 
            tt = filename.split('/'
            name = tt[len(tt)-1
            client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)            # 创建socket对象 
            client.connect((ip,port))                   # 连接服务端 
            client.send(name.encode())                  # 发送文件名 

            file = os.open(filename, os.O_RDONLY | os.O_EXCL|os.O_BINARY)                        # 打开文件 
while1:                                    # 发送文件 
                data = os.read(file,1024
ifnot data: 
break
                client.send(data) 
            os.close(file)                              # 关闭文件 
            client.close()                              # 关闭连接 
except Exception as e : 
            print('发送错误',e) 
defOpenfile(self):
        r = tkinter.filedialog.askopenfilename(title = 'Python tkinter',    # 创建打开文件对话框 
            filetypes=[('All files''*'),('Python''*.py *.pyw')]) 
if r: 
            self.entryData.delete(0, tkinter.END) 
            self.entryData.insert(tkinter.END, r) 

root = tkinter.Tk() 
window = Window(root) 
root.mainloop() 

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-08 07:22:58 HTTP/2.0 GET : https://f.mffb.com.cn/a/466634.html
  2. 运行时间 : 0.202537s [ 吞吐率:4.94req/s ] 内存消耗:4,657.80kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=c35e527d5f82f84557d46e919b7f9a3e
  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.001034s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001614s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000674s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000683s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001373s ]
  6. SELECT * FROM `set` [ RunTime:0.000580s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001467s ]
  8. SELECT * FROM `article` WHERE `id` = 466634 LIMIT 1 [ RunTime:0.001055s ]
  9. UPDATE `article` SET `lasttime` = 1770506579 WHERE `id` = 466634 [ RunTime:0.018585s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000663s ]
  11. SELECT * FROM `article` WHERE `id` < 466634 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001082s ]
  12. SELECT * FROM `article` WHERE `id` > 466634 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001109s ]
  13. SELECT * FROM `article` WHERE `id` < 466634 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.007201s ]
  14. SELECT * FROM `article` WHERE `id` < 466634 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002198s ]
  15. SELECT * FROM `article` WHERE `id` < 466634 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.002253s ]
0.206313s