我正在使用 TCL 套接字命令在两个 TCL/Tk 应用程序之间进行通信,比如 A 和 B,它们都有关联的 GUI。B 上的服务器基本上接受来自 A 的命令并返回执行结果。问题是 B 的 GUI 在执行完成后立即挂起。有没有办法让两个 GUI 独立工作?我正在使用以下脚本来设置两个应用程序之间的连接:
使用以下 TCL 脚本 client.tcl 启动应用程序 A
proc execute { cmd } {
set cid [socket localhost 9900]
puts $cid $cmd
while { [gets $cid line] >= 0 } {
puts $line
}
close $cid
}
set pid [exec B server.tcl &]
execute {puts HelloWorld}
其中 server.tcl 通过应用程序 B 设置服务器
proc server { cid addr port } {
set cmd [gets $cid]
catch $cmd result
puts $cid result
close $cid
}
socket -server server 9900
vwait forever
目标是让 B 的 GUI 处于活动状态,而用户继续使用 A 的 GUI。这样,用户可以根据需要在两个 GUI 之间切换。A 和 B 都提供了不同的功能来处理需要同时提供的相同数据。