我正在使用 xinetd 来提供一个简单的服务,它基本上只需要返回一个字符串值。
该服务需要支持 tcp 和 udp。
这TCP 服务看起来就像这样,并且按预期工作:
service simple-tcp
{
disable = no
type = UNLISTED
id = tcp-service
socket_type = stream
port = 20
protocol = tcp
user = nobody
wait = no
server = /bin/echo
server_args = Hello World.
instances = 25
log_on_success += DURATION HOST
log_on_failure += ATTEMPT HOST
per_source = 5
}
所以我想做同样的事情udp 服务但至今我还没能让它发挥作用。
service udp-service
{
disable = no
type = UNLISTED
id = udp-service
socket_type = dgram
port = 25
protocol = udp
user = nobody
wait = yes
server = /bin/echo
server_args = Hello World.
instances = 25
log_on_success += DURATION HOST
log_on_failure += ATTEMPT HOST
per_source = 5
}
我意识到wait = yes
这对于 udp 来说是必要的。如果我向服务发送数据,连接就会被记录下来,但我无法收到响应。日志文件包含“status=1”,表示错误。但我不知道如何缩小范围。
有人能解释一下发生了什么,是否有办法解决这个问题,或者另一种简单的方法就是通过 udp 返回一个字符串?