tcpudptool---本人开发的网络调试助手

由本社区发起的开源项目
回复
august.seu
帖子: 11
注册时间: 2010-03-14 19:50

tcpudptool---本人开发的网络调试助手

#1

帖子 august.seu » 2010-08-27 0:30

源码包可以在我的博客下载到 http://augustseu-blog.appspot.com
也可以使用
svn checkout http://tcpudptool.googlecode.com/svn/trunk/
co出源码,当然你也可以访问这个googlecode主页。
此tcpudp_tool项目始于8月14日。起初只是为他人讲解LINUX下的SOCKET编程而作,后越写越兴奋,恍然至今十余日已过,今朝程序TCP服务端与客户端联调成功,蹂躏多时尚无错误,我方怠然。然而经半日深思熟虑,我决定开源布之于公,非傲而炫之,实乃愿集思而广益,期冀此程序臻于至善。

程序功能类似于Windows平台下的“网络调试助手”,可建立TCP服务器端和客户端。接收和发送的数据可以以16进制显示,也可以以ASCII显示。相比较“网络调试助手”,本程序的优点是完全基于linux的term终端,即是纯命令行操作。目前支持x86和arm两个平台,支持Windows平台下的串口工具类(SCRT,超级终端等),所以特别有利于嵌入式TCP/IP调试。

目前,此程序可以作为一个基础,继续开发可作为聊天工具,远程控制等等特别适合于嵌入式系统的工具。

程序功能简述,于下图中可略窥一二。
下述所有图中紫色背景的term是本人的一台电脑,IP为10.16.51.2;白色背景term为本人的另一台电脑,IP为10.16.51.9;在这次实验中,.2运行TCP服务器,而.9运行TCP客户端。
图片
图片
图组1 说明:这些是开始界面以及菜单选择画面,开始菜单提供了倒计时功能(注意菜单项下面的这一句话”AutoRun will begin inner X sec”紫色的倒计时X为2秒,白色的X为4秒),用户没有输入值会自动选择默认值。
紫色背景选择了[1]建立一个TCP服务器,服务器要求用户输入一些参数。在规定时间内无输入会自动采用默认值,这个方法适用于无人值守。更多内容请参阅开发者文档。
白色背景选择了[2]建立一个TCP客户端,客户端也要求用户输入一些参数,在这里没有预设定默认值,也没有进行时间设定,所以会无限等待,直到用户输入为止。

随后,程序会对应地显示如下
图片
图片

图组2 说明:这一组图说明了窗口的组织形式,两者之间以分割线来分界。分割线之上为接收窗口(会有提示语句,This is the Rx Window displaying ingress data),之下为发送窗口(会有提示语句,This is the Tx Window. Please Enter egress data)。
紫色背景是服务器端的接收窗口和发送窗口。二者之间以两行“菱形分割线”分开。白色背景是客户端的接收窗口和发送窗口,二者之间是以两行“十字分割线”。从中可以看出2者之间的交互过程。
在这里需要注意的是,发送窗口有2种输入模式:1)如果是以0x开头的字符串,tcpudptool会将其随后字符串的作为16进制来读取,每个字符被读取并认为是4个bit,每2个字符代表一个byte,以此格式输出;在此模式下,程序提供了自动除去空格功能,可以随用户随意输入。2)如果不是以0x开头的字符串或是只有0x两个字符,则程序认为其为ASCII码流,直接输出。以上两种模式都是本人设计算法实现,经过多次测试,但仍希望用户使用并回报bug。
接收窗口是显示如下内容,如果有客户端connect接入,则会显示对方的IP和所使用端口。如果有数据被接收进来,则会显示其长度,并会以16进制和ASCII格式显示。每行显示16个Byte。
关于此组图的更多内容,请参考开发者文档。

如果想退出程序,现今只有Ctrl + c或关闭终端来执行。


程序现在只是搭建了一个框架,有很多很多很多待补足之处:
1) 程序的UDP两个菜单命令尚未实现;
2) 程序初始运行的参数;
3) 程序正常退出的方式;
4) 程序对接受与发送数据的记录;
5) 程序目前只有单对单方式,是否有必要单对多,尚须调研,以及实现方法;
6) 程序对控制协议的支持。
若有哪位同学对此有兴趣,可以与我联系。
关于本程序的开发者文档,我会在我的博客中逐渐发布,可以访问http://augustseu-blog.appspot.com
上次由 august.seu 在 2010-09-06 21:48,总共编辑 1 次。
august.seu
帖子: 11
注册时间: 2010-03-14 19:50

Re: tcpudptool---本人开发的网络调试助手

#2

帖子 august.seu » 2010-08-27 1:11

源码包等开发者文档完成就一并放出~
august.seu
帖子: 11
注册时间: 2010-03-14 19:50

Re: tcpudptool---本人开发的网络调试助手

#3

帖子 august.seu » 2010-08-30 0:06

在国内的现阶段嵌入式设备的开发中,将串口终端重定向为标准输出是比较常用的一个方法。开发者在串口虚拟终端软件,例如Windows的超级终端,还有国内较常用的SecureCRT等来操作嵌入式设备。TUT(其实是libncurses)能够很好的支持这些虚拟终端,见图如下,
图片
图片
说明:PC机IP为10.6.15.166;开发板IP为10.6.15.238;
PC机通过串口COM1调试开发板,可通过SecureCRT的标签看出来;
PC机运行Windows下的常用的网络调试助手,或者使用Windows自带的超级终端,连接开发板,可以清楚的看见两者交互流程。只是由于超级终端的窗口列数过少,ASCII的输出有部分换行。
甚至可以,如果你厌倦了这些软件,在嵌入式设备上开启telnet守护进程,在Windows的CMD窗口下也可以
图片

关于将tut移植到arm平台,或者可以称作将libncurses库移植到arm平台,请参阅开发者文档。
头像
slax
帖子: 1099
注册时间: 2009-08-17 3:52

Re: tcpudptool---本人开发的网络调试助手

#4

帖子 slax » 2010-08-30 14:04

不错,居然前天没发现。 :em11
We believe that the internet should be public, open and accessible.
软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。
iceplayer! linux音乐新体验~ 最新版本4.0.5-20110520已更新!viewtopic.php?f=137&t=252461
想要iceplayer 测试版麼?加入QQ群80071264吧,在code.google也可找到
http://www.iceplayer.org/
http://jasy.ice.blog.163.com/
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: tcpudptool---本人开发的网络调试助手

#5

帖子 eexpress » 2010-08-30 14:12

憋了这么久才发出来啊。
:em04
终于有共享的精神了。
● 鸣学
august.seu
帖子: 11
注册时间: 2010-03-14 19:50

Re: tcpudptool---本人开发的网络调试助手

#6

帖子 august.seu » 2010-09-01 0:08

关于本程序的编译

首先,先看一下源码树结构(因为发现使用tree命令的显示太占篇幅,而且显示还很丑,所以,只能使用多次ls命令的显示了)

august@Thinkpad:~/WorkBench/tcpudp_tool$ ls -A
codeblocks compile.sh doc .git .gitignore ncurses-arm project src

august@Thinkpad:~/WorkBench/tcpudp_tool$ ls -R ncurses-arm/
ncurses-arm/:
include lib

ncurses-arm/include:
cursesapp.h curses.h cursesp.h cursslk.h etip.h menu.h ncurses_dll.h panel.h term_entry.h tic.h
cursesf.h cursesm.h cursesw.h eti.h form.h nc_tparm.h ncurses.h termcap.h term.h unctrl.h

ncurses-arm/lib:
libcurses.a libcurses.so libform.a libmenu.a libncurses.a libncurses++.a libncurses.so libpanel.a libtermcap.a libtermcap.so libtic.a libtic.so

august@Thinkpad:~/WorkBench/tcpudp_tool$ ls -R src
src:
dbgmain.c include main.c rxtx TCPClt.c TCPSvr.c tthread

src/include:
common.h types.h

src/rxtx:
rxtx.c rxtx.h

src/tthread:
tthread.c tthread.h

august@Thinkpad:~/WorkBench/tcpudp_tool$ ls project/
aclocal.m4 autom4te.cache compile configure.in depcomp install-sh Makefile.in NEWS
AUTHORS ChangeLog configure COPYING INSTALL Makefile.am missing README

关于更多codeblocks和git的目录,请参阅开发者文档

x86平台

若没有安装libncurses5库,请执行(sudo aptitude install libncurses5)安装。随后进入到tut的根目录。
作者已制作了shell脚本,只需运行该shell脚本,即可在源码目录的相对根目录得到bin文件。


arm平台

作者假设所有人的交叉编译平台都已经OK,世界恢复了和平。

首先,需要使用交叉编译好的对arm平台的libncurses库文件,关于如何获得已编译好的libncurses库文件,有两种方法:
1. 你可以从ncurses官方网站上下载源码包,自己交叉编译,选择自己所需要的库文件和头文件,按照上述显示的树结构排列并将其放入自己的工程中。
2. 你可以从debian官方网站上下载已经交叉编译并生成好的deb文件,并将其解包,解包的方法是执行ar -vx XYZ.deb,然后会在data.tar.gz中发现你所需要的文件。
当然,在本软件的源码目录中,是包含已经交叉编译好的libncurses的,静态库和动态库都系有的。作者很懒,也很信任特别谨慎的debian,所以使用的上述第2种方法。

tut推荐使用最新版本的ncurses库5.7版,这个原因仅是因为作者很懒,只在5.7版下做了测试...

关于交叉编译tut的方法,作者已经制作了shell脚本,只需要执行该shell脚本,即可在源码的相对根目录找到bin文件。如果想知道更多关于制作shell脚本,Configure脚本和Make脚本的内容,请参阅开发者目录。

在板端运行tut并使用串口软件工具作为控制台时,在没有正确配置arm板端的终端时,会出现这样的错误
Error opening terminal: vt102.
这时,你需要按如下步骤来配置板端的term
首先,以root权限执行
mkdir /usr/tut/terminfo/v -p
其次,执行
export TERM=vt100
export TERMINFO=/usr/tut/terminfo
当然,你也可以将上述2个语句增添入/etc/profile文件中

最后,
将你的PC机的/lib/terminfo/v/vt100文件和vt102文件拷贝到你板端的/usr/tut/terminfo/v目录下。
firefoxmmx
帖子: 407
注册时间: 2006-07-28 8:51

Re: tcpudptool---本人开发的网络调试助手

#9

帖子 firefoxmmx » 2010-11-15 12:30

支持支持。。
头像
widon1104
帖子: 839
注册时间: 2008-07-17 10:55

Re: tcpudptool---本人开发的网络调试助手

#10

帖子 widon1104 » 2011-03-12 21:48

可不可以做的像eltest那样,建立连接后可以收数据,也可以发数据啊
头像
widon1104
帖子: 839
注册时间: 2008-07-17 10:55

Re: tcpudptool---本人开发的网络调试助手

#11

帖子 widon1104 » 2011-03-28 22:12

widon@widon-laptop:~$ svn checkout http://tcpudptool.googlecode.com/svn/trunk
svn: Working copy 'trunk' locked
svn: run 'svn cleanup' to remove locks (type 'svn help cleanup' for details)
lijun783
帖子: 1
注册时间: 2013-08-16 16:06
系统: windows

Re: tcpudptool---本人开发的网络调试助手

#12

帖子 lijun783 » 2013-08-16 16:10

feichangdehao 费
回复