aDo*_*DoN 1 file-descriptors socket
据我所知,套接字在 /proc//fd 文件夹中创建了 3 个文件描述符,STDIN、STDOUT 和 STDERR。
当我在一个套接字中输入时,它应该在原始 TCP 连接中输出另一个套接字,但问题是,当我echo
输入 STDIN 时,它不输出字符串。
我附上一张照片:
我希望在侦听套接字中看到输出,但我没有。谢谢
打开一个套接字会打开一个套接字,这就是您在输出 ( socket:[5474494]
) 中看到的列为文件描述符 3 的内容。其他三个文件描述符是标准输入、输出和错误描述符,它们默认为任何进程打开。在你的情况下,这些指向程序运行的终端,这就是为什么当你写入文件描述符时“surni”出现在那里。
要写入套接字,您需要使用适当的机制,例如netcat
在另一个方向:
echo Hello | nc localhost 9999
Run Code Online (Sandbox Code Playgroud)
或者,如果您使用的是 Bash:
echo Hello > /dev/tcp/localhost/9999
Run Code Online (Sandbox Code Playgroud)
但是,您似乎已经使用 another 建立了到端口 9999 的连接netcat
,因此这在您的情况下实际上不起作用。您需要使用已建立的连接...
如果您希望长时间运行nc
为其他进程提供一种方式进入套接字,则需要进行设置,例如使用 FIFO:
mkfifo socket-input
nc localhost 9999 < socket-input
echo Hello > socket-input
Run Code Online (Sandbox Code Playgroud)