python xinetd客户端未接收到d

2024-03-28 12:57:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用xinetd远程运行一个命令(tracejob)。当我通过telnet连接时,一切正常。不幸的是,我编写的客户机似乎没有从服务器接收数据。代码看起来像:

服务器:

import sys
import commands

def main():
        tjinput = sys.stdin.readline().strip()
        (ret, out) = commands.getstatusoutput('/usr/bin/tracejob '+tjinput)
        print out
        sys.stdout.flush()

if __name__ == "__main__":
        main()

客户:

^{pr2}$

客户端进程停止在短袜收银机(1024)线路。我一辈子也说不清为什么短袜收银机没有从套接字读取输出。可能是编码问题?如果有帮助,xinetd.d文件如下所示:

service tracejob
{
        flags                   = IPv4
        disable                 = no
        socket_type             = stream
        wait                    = no
        user                    = root
        group                   = root
        server                  = /usr/local/bin/tracejob_xinetd.py
        port                    = 12345
        type                    = UNLISTED
}

tracejob在哪_xinetd.py公司是上面描述的服务器。在

有什么提示吗?提前谢谢。在


Tags: noimport服务器binmainusrtypesys
1条回答
网友
1楼 · 发布于 2024-03-28 12:57:41

您有一个死锁的情况:客户机发送一个不完整的行并等待服务器发送一些内容,服务器在发送回复之前等待行完成或EOF。在

现在你有两种方法可以继续:

  1. \n附加到要发送的字符串。在
  2. 在写入后,但在读取之前,用sock.shutdown(socket.SHUT_WR)在客户端“半关闭”套接字。在

相关问题 更多 >