实现一个简易的TCP调试工具

  • 2019-12-21
  • 0
  • 0

最近在深入学习Swoole相关知识(一个PHP高性能网络框架).提供了TCP组件.在调试的时候出现困难,不能像HTTP请求一样通过Postman调试.又不想使用别人现成的无奈只能自己动手实现一个简易的TCP Clinet.

成品

上面是一个实现的成品.通过易语言编写的,做一些Windows工具还是很方便的.

项目用到了 HP-Socket

HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。

(引用自百度百科)

同样也是一款优秀的网络框架.完美利用了IOCP的高性能.

为了快速开发,使用了某位网友封装的模块

成品

使用该模块下的ITcpClient类.主要使用了这几个方法.

' my_client 类型是ITcpClient

client_handle = my_client.Create (假) '返回句柄
my_client.SetSocketBufferSize (client_handle, 4 × 1024 × 1024)  ' 设置缓冲区大小为4Mb
is_connect = my_client.Start (client_handle, text_ip.内容, 到整数 (text_port.内容), 真, , ) '创建连接

' 绑定回调事件
my_client.OnReceive (&tcp_recv) ' 消息到达
my_client.OnClose (&tcp_close) ' 连接断开

my_client.SendBytes (client_handle, 到字节集 (text_send.内容 + #换行符)) ' 发送字节集数据

成品

其余的都是一些交互逻辑.代码之后会上传一份. (由于语言的问题,没法直接贴出代码.无奈...)

客户端代码实现完成后,编写一个服务端程序测试下.

Swoole代码:

<?php
$serv = new Swoole\Server("0.0.0.0", 9502);

$serv->set(array(
    'worker_num' => 1,
    'open_eof_split' => true,
    'package_eof' => "\r\n",
));

$serv->on('connect', function ($serv, $fd){
    $serv->send($fd, '欢迎连接');
});

$serv->on('receive', function ($serv, $fd, $reactor_id, $data) {
    $serv->send($fd, "您发送的数据是:". $data);
});

$serv->start();

最终通过软件测试下:

成品

交互成功.大功告成!

工具源码下载地址:http://img.webhuang.cn/eyuyan_tcp_client/webhuang-tcp-source.zip

成品下载地址:http://img.webhuang.cn/eyuyan_tcp_client/product.zip

无论源码还是成品HPSocket4C.dll该文件需放在当前运行目录.

评论

还没有任何评论,你来说两句吧