我正在使用TIdTCPCmdServer来处理与客户端应用程序的所有通信。 我希望我的服务器记录所有类型的东西,包括网络流量。 有没有简单或聪明的方法来查看TCPCmdServer实际收到和发送了多少字节? 我只能想到代码

ASender.SendReply;

Inc (FTraffic, Sizeof (ASender.NormalReply.Code) +

Sizeof (Char) * ASender.NormalReply.Text.Length));

这在我看来非常难看,因为这些流量更新会在我的代码中传播,并且相当复杂。

有什么建议?

谢谢你的帮助。

#1楼

将TCPCmdServer包装到记录流量的类中。

您可以从TCPCmdServer派生您的类,并覆盖发送和接收方法(如果它们是虚拟的)。

就像是:

type

TTcpCmdServerWithLogging = class(TTcpCmdServer)

...

procedure SendReply; override;

implementation

procedure SendReply;

begin

inherited SendReply;

Inc (FTraffic, Sizeof (NormalReply.Code) +

Sizeof (Char) * NormalReply.Text.Length));

end;

如果它们不是虚拟的,则创建实例化TCPCmdServer并公开所需方法和属性的新类。

#2楼

查看Indy的拦截类。 您应该能够创建一个自定义拦截类来覆盖Receive()和Send()方法,并且除了调用基类的方法之外,还可以实现流量计算。 已经有拦截类来进行日志记录,您可以以相同的方式连接自定义类。

TIdConnectionIntercept的文档应该是一个很好的起点。 还有一个很简单的例子, 在这里就如何创建并在运行时连接拦截。

#3楼

非常感谢你的回答。 我选择以mghie描述的方式实现它 - 通过为我的连接实现自定义拦截器类。 对于那些对解决方案感兴趣的人,我将在这里提供一些源代码:

type

TCountTrafficInterceptor = class (TIdConnectionIntercept)

public

type TIntPointer = ^Longint;

private

FTraffic : TIntPointer;

public

constructor Create (TrafficVar : TIntPointer);

procedure Send (var ABuffer : TIdBytes); override;

procedure Receive (var ABuffer : TIdBytes); override;

end;

constructor TCountTrafficInterceptor.Create (TrafficVar : TIntPointer);

begin

FTraffic := TrafficVar;

end;

procedure TCountTrafficInterceptor.Send (var ABuffer : TIdBytes);

begin

inherited Send (ABuffer);

FTraffic^ := FTraffic^ + Length (ABuffer);

end;

procedure TCountTrafficInterceptor.Receive (var ABuffer : TIdBytes);

begin

inherited Receive (ABuffer);

FTraffic^ := FTraffic^ + Length (ABuffer);

end;

在TIdTCPCmdServer的OnConnect方法中:

AContext.Connection.IOHandler.Intercept :=

TCountTrafficInterceptor.Create (@FNetworkTraffic);

效果很好,只是我正在寻找的那种解决方案。 再次感谢您的回答。

顺便说一句:我如何在帖子中使用(at)标志? 当我尝试输入时,我总是得到一个块引用...

java网络流量测量工具_使用Indy测量网络流量相关推荐

  1. java转网络字节序_【转】网络字节序与主机字节序

    最近在项目开发过程中,需要在采用JAVA作为语言的服务器与采用C++作为语言的服务器间进行通信,这就涉及到这两种语言间数据类型的转换以及网络字节序与主机字节序的区别.该文主要说说网络字节序和主机字节序 ...

  2. java 爬虫 百度新闻_基于HttpClient实现网络爬虫~以百度新闻为例

    在曾经的工作中,实现过简单的网络爬虫,没有系统的介绍过,这篇博客就系统的介绍以下怎样使用java的HttpClient实现网络爬虫. 关于网络爬虫的一些理论知识.实现思想以及策略问题.能够參考百度百科 ...

  3. 网络研讨室_即将举行的网络研讨会:调试生产中Java的5种最佳实践

    网络研讨室 您的团队是否花费超过10%的时间在生产中调试Java? 将新代码部署到生产中是一项艰巨的任务. 在您的本地环境中起作用的东西在生产中的作用并不相同,您可以通过用户来了解. 不理想吧? 生产 ...

  4. 像素测量工具_一键式测量仪在手,磁性元件尺寸测量无忧

    智能手机元年已经迈入了折叠屏时代,厂商们都在公布自己在相关领域的突破,无论是内折还是外折,每一种都让消费者欣喜若狂.其中有一个功能,各厂商都实现了意见统一,那就是闭合功能需要使用磁铁佢支持.当前所发布 ...

  5. 像素测量工具_结构光测量—工程质量管理的潜力股

    计算机视觉技术与图像处理技术的发展促进了三维测量技术的进步,基于计算机视觉的三维信息获取技术已成为了当前三维测量的主流技术方案,光学测量迅速成为了三维测量技术的热门研究内容.本文将介绍工程应用上三维测 ...

  6. 手机上网流量统计_数据统计 | 上半年手机流量同比增110.2%,你贡献了多少?

    来源:工信部网站.中新经纬 版权申明:内容来源网络,版权归原创者所有.除非无法确认,我们都会标明作者及出处,如有侵权烦请告知我们,我们会立即删除并表示歉意.谢谢! 7月25日,工信部网站公布了2019 ...

  7. 流量复制_详解Linux系统流量复制--gor、tcpcopy、nginx模块流量复制等

    概述 对于一些有并发要求的业务,特别是对接外部流量时,产品上线前一定要做的就是压力测试,但是常规的压力测试并不能覆盖所有情况.以gemeter.ab,.webbench.http_load为例,这些通 ...

  8. 网络语言嗨C,网络流行语大全_最新最热门网络语言

    大步跨入2016年,掐指一算,惊恐地发现90后孩子们都到了晚婚晚育年龄了!作为80后.90后,看看你们还能和00后"无缝对接"吗?2016最新网络语言你知道多少? 吃藕 单看&qu ...

  9. 基于python的网络爬虫编程_基于Python的网络爬虫程序设计

    程序设计 ●Program Design 基于 Python的网络爬虫程序设计 网络 信 息量 的迅 猛 增 长,对 如何从海量的信息中准确的搜索 到用户需要的信息提 出了极大的 挑战.网络爬 虫具有 ...

最新文章

  1. 超牛EXCEL操作技巧,用的好,会涨工资哦
  2. Constraint4:default约束
  3. python编程少儿游戏编程_少儿编程课堂|python – 用游戏学编程
  4. MySql恢复密码的过程
  5. Azure 国际版与中国版服务列表对(2020年6月版)
  6. 检查集群状态命令_轻松管理Kubernetes集群的7个工具
  7. python从小到大的顺序输出_「小白专栏」Python中使用for循环,为什么输出结果不是按顺序?...
  8. 客座编辑:朱扬勇,男,复旦大学计算机科学技术学院教授,上海市数据科学重点实验室主任。...
  9. 获取远程linux版本,远程批量获取Linux和Windos操作系统版本(内核)
  10. 高等组合学笔记(十五):容斥原理,错排问题
  11. 记录:网络通信协议中的TCP/IP与UDP
  12. C# partial 说明
  13. CentOS_mini下安装docker 之 安装docker CE
  14. linux系统rc路由配置_Linux下路由配置梳理
  15. 浅谈csdn写博客几年来的感受———已结题
  16. HTML在线转换JS
  17. 【黑马程序员pink老师前端】HTML
  18. java使用poi对excel文件的加密解密
  19. constrain用法_constrain是什么意思_constrain的翻译_音标_读音_用法_例句_爱词霸在线词典...
  20. omf多路径 oracle_Oracle OMF 功能详解

热门文章

  1. 用 Axure RP 9 设计百度搜索网页
  2. 小米手机刷android one,别羡慕小米用户了!一加8Pro成功刷入MIUI 12,附简易步骤...
  3. CentOS 7修改ip地址(详细)
  4. 《离散时间信号处理学习笔记》—线性时不变系统的变换分析(二)
  5. 双非本科22届暑期实习,成功拿到B站、阿里实习offer
  6. CANopen 0x6091齿轮比
  7. 微信小程序实现pdf、word等格式文件上传的方法,微信小程序word文档
  8. 2022年电工(初级)考试题库及在线模拟考试
  9. stc-isp中的串口助手如何使用?
  10. Java 去掉字符串中的换行符回车符等