从TCL中的套接字退出,而不终止应用程序

从TCL中的套接字退出,而不终止应用程序,tcl,tk,Tcl,Tk,我正在尝试使用socket-server-accept命令在TCL中构建一个套接字,然后使用vwait-forever循环-最简单的套接字 我能够很好地连接到服务器,但我的问题是——当不再需要套接字时,如何关闭它而不必退出应用程序 有关我的应用程序的一些上下文: 它是一个带有TCL外壳的Synopsys工具 我计划使用TK构建GUI,理想情况下,出于可伸缩性的原因,我想用Python开发它(另外,通过Synopsys TCL shell的TK接口不是常规的TCL/TK接口) 当ever事件循环

我正在尝试使用
socket-server-accept
命令在TCL中构建一个套接字,然后使用
vwait-forever
循环-最简单的套接字

我能够很好地连接到服务器,但我的问题是——当不再需要套接字时,如何关闭它而不必退出应用程序

有关我的应用程序的一些上下文:

  • 它是一个带有TCL外壳的Synopsys工具

  • 我计划使用TK构建GUI,理想情况下,出于可伸缩性的原因,我想用Python开发它(另外,通过Synopsys TCL shell的TK接口不是常规的TCL/TK接口)

  • ever
    事件循环运行时,shell会不断地侦听-使应用程序自己的TCL用户提示不可用-我不希望在套接字上的某个命令运行时shell可用,但我确实希望套接字上的命令完成后shell可用。(我知道实施起来有点复杂……但只是提出问题)

  • 当我尝试使用通过套接字传递的
    exit
    命令时,应用程序(整个应用程序)关闭

  • 是否有任何命令可以通过套接字仅关闭套接字而不关闭整个应用程序


    如果需要更多详细信息,请告诉我。

    调用
    exit
    将退出解释器并导致进程关闭。您可以使用通道上的
    close
    功能关闭插槽。在具有已连接客户端的服务器应用程序中,有两个套接字。处理完客户端的所有事务后,服务器代码应在客户端套接字上调用
    close
    。这是在创建服务器套接字时传入的回调函数中提供给代码的。服务器套接字也需要在某个时候关闭。如何做到这一点取决于您的应用程序和平台。在unix系统上,您可以使用扩展来捕获调用此关闭函数的信号。或者,您可以关闭服务器以响应来自控制套接字或标准输入通道的某些输入。除非添加代码,否则解释器将不会读取和解析输入。使用
    fileevent
    您可以安排从多个通道读取,使用
    info complete
    您可以从stdin读取并评估输入以获得服务器的REPL循环。可以在网上找到,我想也有一些例子。

    谢谢链接!我会玩转它,看看我是否能让它在我的场景中工作。