gyn

Win32下的Perl,无用的select,停滞的Tk,结束吧....

TclTk Socket编程的测试

最近写了一个tcltk的rpc脚本,用来远程执行tcl脚本。基本上的思路就是,客户端发出一连串的脚本命令,只要是tcl的都行,函数啊什么的;服务 器端接受后,检测一下,没有语法错误的话,就把运行结果返回给客户端,同时清空缓冲区并等待接下来接收的命令。具体的解释以后再说,也可能不写了。我的想 法是把这个脚本安在一个服务器上,作为一个以tcl脚本为基础的通用服务,执行来自不同客户端的各个任务。
大抵这种两端跑的程序,写的时候没什么,测试的时候就颇为麻烦了。开两个cmd,一边一个server,另一边client,完了为了停下来还得两头按 Control-C,真是一个手忙脚乱啊!
我想这样的测试,一般都是起了服务端,再客户端发一些命令,然后看接受效果就差不多了。完全可以搞在一起,把测试弄成一个脚本来执行,完了一起退出。当然 服务器端脚本和客户端脚本要在不同的环境中运行。这里有两个选择,要么建两个interp,要么用多线程。前段时间用interp用得有点腻味,包括这个 rpc脚本也是用interp来处理不同的客户端连接的,所以这次换用多线程。具体的脚本如下,存为test_in_thread.tcl文件:
package require Thread
package require ltools

foreach file $argv command {server_commands client_commands} {
    set $command "source $file"
}

set serv_thread [thread::create $server_commands]
set cli_thread  [thread::create $client_commands]

after 5000 {
    leach [list $::cli_thread $::serv_thread] [@ {thread} {
        thread::release $thread
    }]
    set delay 1
}

vwait delay
其实很简单,执行的参数包含两个脚本名,分别是服务器端和客户端的;接着,起两个线程,程序等待在delay变量上,5秒之后重设delay并完成退出。 这样以后测试socket程序就方便多了。如上面说的rpc程序,写完之后运行:tcl86 test_in_thread.tcl rpc.tcl rpc_test.tcl,看看结果就行了。
附件下载

posted on 2010-03-25 15:04 gyn_tadao 阅读(1102) 评论(3)  编辑 收藏 引用 所属分类: TclTk

评论

# re: TclTk Socket编程的测试 2010-03-29 13:46 淘宝专卖店

把你不难报答你爱仕达  回复  更多评论   

# re: TclTk Socket编程的测试 2010-08-19 17:47 efg

没有一点技术含量还在这里卖弄!  回复  更多评论   

# re: TclTk Socket编程的测试 2010-09-17 10:40 。。。

楼上说得很对,确实没啥技术含量啊,这东西。  回复  更多评论   

只有注册用户登录后才能发表评论。
<2009年9月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

导航

统计

常用链接

留言簿(14)

随笔分类(126)

随笔档案(108)

相册

搜索

最新评论

阅读排行榜

评论排行榜