【发布时间】:2015-04-09 06:37:47
【问题描述】:
如何使用 C 中的原始 telnet 选项验证客户端发出的 TELNET 命令是否在服务器上完成?
recv(...) 等待缓冲区输入,但不等到命令完成。
等待是否需要在套接字级别?或者,是否有一个 TELNET 选项? (我通过搜索还没有找到)
man socket 显示可以使用 select/poll 来验证 socket FD 是否可以读/写;但我认为这不是正确的方法。
任何帮助或至少是指导都会有所帮助。
【问题讨论】:
-
当你得到一个提示字符串时?
-
我正在与多个程序进行通信,它们各自都有提示字符串。这是我最初的想法。这将是一种肮脏的解决方法,但我相信还有更优雅的方法。
-
您是否正在尝试编写自己的 telnet 服务器?你读过 Telnet 规范了吗? Telnet 命令对它们具有非常特殊的结构。您正在从套接字读取原始数据,因此您必须解析收到的内容,如果命令不完整,则必须返回套接字并读取更多原始字节以在循环中完成解析、读取和解析需要,直到您收到完整的命令,然后您可以处理它。这是基本的套接字编程 101 种东西。