与远程登录客户端协商回声
Negotiating echo with telnet client
出于某种原因,我想为标准Telnet应用程序创建一个服务器作为要连接的客户端。 我在C++中编写了一个基本的TCP服务器,其目的是提供交互式菜单,所以我必须在我这边设置ECHO。
当客户端连接时,我发送 IAC 将回显到它,我希望得到 IAC DO ECHO。令我惊讶的是,我得到的是IAC DO ECHO,IAC不会回声,IAC不会回声。 三条消息一一。并且客户端仍在自行回响。
我做错了什么?这三个消息是什么意思?
int main() {
TcpListener tcpListener(10001); // custom tcp helper library
auto stream = tcpListener.acceptClient();
vector<uint8_t> msg = {255, 251, 1}; // send IAC WILL ECHO on start
stream.writeBytes(msg);
auto message = stream.readBytes(100);
while (!message.empty()) {
for (auto c : message) cout << (int)c << endl; // to see what i'm getting from client
cout << "length: " << message.size() << "n";
stream.writeBytes(message); // echo back
message = stream.readBytes(100);
}
return 0;
}
我认为我的错误现在可以在我的代码中看到,但我处理了一些更复杂的版本。问题是我回显了来自客户端的所有消息,所以当我发送 IAC 将回显时,它会用 IAC 做回显来响应。当我回声时,客户说它不会这样做,然后发送 IAC 不回声(我认为是为了清除这种情况(。因此,当然要避免此类错误,telnet服务器的第一件事就是正确处理协商。
相关文章:
- "unknown ca"自生成的 CA、证书和客户端/服务器
- 如何将函数集合传递给客户端类,以便将它们当作客户端类本身的成员使用
- 使用调试/崩溃报告将应用程序部署到客户端
- 如何在本地机器上运行c++和javascript客户端代码(hackerbank风格)
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 从服务器传输到客户端的消息不会出现
- OpenSSL TLS服务器-使用客户端证书白名单
- 当服务中的事件被触发时,如何将响应从服务发送回客户端?
- 我可以与 python 服务器而不是 c++ 客户端建立 tcp/ip 套接字吗?
- 提升 Asio TCP 服务器 处理多个客户端
- boost::asio UDP 广播客户端仅接收"fast"数据包
- 如何绑定 C++ gRPC 客户端的网络接口
- C++套接字客户端到 Python 服务器未创建连接
- 用于解析 win64 堆栈跟踪的命令行客户端(可以访问符号服务器)
- 将相机数据从服务器实时流式传输到客户端
- 如何将 Firebase 与基于 Linux 的客户端应用配合使用,以便与服务器进行双向消息通信
- GRPC C++ TLS 客户端 grpc::SslCredentials() 方法不返回
- 计算出有多少客户端可以连接到我正在使用的一些tcp服务器代码
- 与远程登录客户端协商回声
- Telnet客户端-服务器会话与协商