除了 echo 守护进程之外,还有其他方法来显示 ip 吗?

除了 echo 守护进程之外,还有其他方法来显示 ip 吗?

是否有任何替代 echo 守护进程来显示 ip 而不是给定的字符串?

例如:我的 ip = 80.1.2.3

服务器ip = 1.2.3.4

root@my-machine bash$ telnet 1.2.3.4
Trying 1.2.3.4...
Connected to 1.2.3.4.
Escape character is '^]'.
80.1.2.3

答案1

这是你想要的 Python 的一个小实现(运行它server.py <port>

#!/usr/bin/env python

import socket
import sys

_, port = sys.argv

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(("0.0.0.0", int(port)))
sock.listen(1)

while True:
    conn, addr = sock.accept()
    ip, port = addr
    conn.send(ip.encode("ascii") + b"\n")
    conn.close()
$ ./server.py 1234 &
[1] 20315
$ nc localhost 1234
127.0.0.1
$

答案2

socat

socat tcp-listen:12345,reuseaddr,fork system:'echo "$SOCAT_PEERADDR"'

答案3

简而言之,。 Echo 协议描述在RFC 862非常简单且明确:

基于 TCP 的回显服务

一个回显服务被定义为基于 TCP 的连接应用程序。服务器在 TCP 端口 7 上侦听 TCP 连接。连接建立后,收到的所有数据都会发回。这将持续到主叫用户终止连接为止。

基于UDP的回显服务

另一种回显服务被定义为基于 UDP 的数据报应用程序。服务器在 UDP 端口 7 上侦听 UDP 数据报。收到数据报后,其中的数据会在应答数据报中发回。

相关内容