gpt4 book ai didi

tcp - 你如何让 xinetd 与 wait=yes for protocol=tcp 一起工作

转载 作者:可可西里 更新时间:2023-11-01 02:55:10 26 4
gpt4 key购买 nike

我有一个服务,它会在启动后监听端口 8443。我已将 xinetd 配置为在端口 8443 上建立连接时启动我的服务。

所以 Xinetd 应该启动我的应用程序,然后让我的应用程序处理任何更多的传入连接。

我反复收到“警告:无法获取客户端地址:传输端点未连接”,然后 Xinetd 禁用了我的服务 10 秒。

只有当我设置 wait = yes 时才会发生这种情况。

阻止我的应用程序监听端口 8443 没有任何区别。

我对 xinetd 等待标志的理解是否正确,还是我对 xinetd 配置做错了什么?

我看过手册页,wait=yes 通常与 UDP 相关联,但其中没有任何内容表明您不能将它与 TCP 一起使用。

我在 SO 上进行了搜索,我发现的所有内容都包含使用 wait=no 的 tcp。

连接到 xinetd 时出现以下错误。

5786]: warning: can't get client address: Transport endpoint is not connected
5564]: EXIT: MyApplication status=1 pid=5786 duration=0(sec)
5564]: START: MyApplication pid=5787 from=<no address>
5787]: warning: can't get client address: Transport endpoint is not connected
5564]: EXIT: MyApplication status=1 pid=5787 duration=0(sec)
5564]: Deactivating service MyApplication due to excessive incoming connections. Restarting in 10 seconds.
5564]: FAIL: MyApplication connections per second from=<no address>
5564]: Activating service MyApplication

我的配置是:

    disable = no
socket_type = stream
protocol = tcp
wait = yes
user = user
server = /usr/bin/MyApplication
port = 8443
type = UNLISTED
flags = IPv4

最佳答案

以防万一其他人遇到这个,我一直在寻找同样的东西。来自其中一位维护者史蒂夫·格拉布的评论 here , 他说

A wait service is one that accepts the connection. telnet does not accept the connection - it expects the connection to be accepted and the socket dup'ed to the stdin/out descriptors.

There is also no way for xinetd to check to see if a child has accepted the connection. Therefore, when you have a program that's configured as a wait service and it doesn't accept the connection, the socket is still readable when xinetd goes back to the select loop. Around and around it goes.

子服务器从 xinetd fork 然后调用 exec_server 时启动.当 wait=true 时,如上文所述,子进程必须接受套接字上的连接。要获取套接字,可以将值为 0 的文件描述符与 accept 一起使用。我将 python 与以下内容一起使用,

import socket

s = socket.fromfd(0, socket.AF_INET, socket.SOCK_STREAM)
print(s.accept())

它返回 (conn, address),其中 conn 是一个新的套接字对象,可用于在连接上发送和接收数据。

关于tcp - 你如何让 xinetd 与 wait=yes for protocol=tcp 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43174771/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com