Итак, я пытаюсь создать клиент telnet, который подключается к некоторой части адреса для работы, а часть для Boost::Asio
цели обучения.
Мой маленький проект имеет три обработчика:
Обработчик разрешения:
void resolverHandler(const boost::system::error_code& ec, ip::tcp::resolver::iterator iter) {
if (ec) {
cout << "Resolved failed with message: " << ec.message() << endl;
}
else {
ip::tcp::endpoint endpoint = *iter;
cout << "Connection to: " << endpoint.address() << ":" << endpoint.port() << endl;
tcpSocket.async_connect(endpoint, connectHandler);
}
}
Обработчик подключения
void connectHandler(const boost::system::error_code& ec) {
if (ec) {
cout << "Connect failed with message: " << ec.message() << endl;
}
else {
cout << "Connection established" << endl;
tcpSocket.async_read_some(buffer(_data), readHandler);
}
}
Обработчик чтения:
void readHandler(const boost::system::error_code& ec, size_t ammountOfBytes) {
if (ec) {
cout << "Read failed with message: " << ec.message() << endl;
}
else {
cout << ammountOfBytes << endl;
cout << _data.data() << endl;
tcpSocket.async_read_some(buffer(_data), readHandler);
}
}
И это моя основная функция:
io_service ioservice;
ip::tcp::resolver resolver(ioservice);
ip::tcp::socket tcpSocket(ioservice);
array<char, 16> _data;
ip::tcp::resolver::query query("192.168.200.200", "23");
int main() {
resolver.async_resolve(query, resolverHandler);
ioservice.run();
return 0;
}
Но я всегда получаю мусор вот так:
Connection to: 192.168.206.226:23
Connection established
15
² ² ²# ²' ²$
Я признаю, что я новичок в telnet, но я неуверен, почему я получаю этот ответ?Не уверен, что мне нужно завершить данные, которые я получаю перед печатью, обнулять, но даже при этом у меня тот же ответ.
Вот обычный ответ, который я должен получить - пробовал с Windows Telnet:
Welcome Message (localhost) (ttyp0)
login:
Цените, если у кого-то есть идеи, что делать.