Я пытаюсь создать простой сервер Tcp на C++, используя Boost ASio Library. Я написал два класса TcpConnection и TcpServer.Boost Asio io_service, Чтение сообщений от клиента
Поведение, в котором я нуждаюсь, заключается в том, что сервер Tcp должен иметь возможность отправлять сообщения всем подключенным клиентам, а клиенты должны иметь возможность регистрировать/отменять регистрацию на сервере.
Я смог достичь отправки сообщения с сервера. Я не увенчался успехом у читателей. Мой клиент написан в java, используя apache mina.
код сервера
message = message + "\r\n";
const int bytesToSend = message.length();
boost::system::error_code error;
boost::asio::write(socket, boost::asio::buffer(message, bytesToSend), boost::asio::transfer_all(), error);
Клиентский код
ConnectFuture future = ioConnector.connect(new InetSocketAddress(Port),
new TriggerReceiverHandler();
System.out.println("Message Receiver started and listening on port "+ Port);
IoSession session = future.getSession();
session.write(new String("TEst Message From Client"));
На сервере кода для чтения сообщений осуществляется с помощью async_read
boost::array<char, 1> buf;
boost::asio::async_read(socket, boost::asio::buffer(buf),
boost::bind(&TcpConnection::handleRead, this, buf, boost::asio::placeholders::error));
void TcpConnection::handleRead(boost::array<char, 1> buf, const boost::system::error_code& error)
{
if(!error)
{
std::cout << "Message: " << buf.data() << std::endl;
}
else
{
std::cout << "Error occurred." << std::endl;
}
}
Но handleRead не вызывался когда я запускаю сообщение, записывая сеанс с клиента. Скажите, пожалуйста, что я делаю что-то неправильно.
Буду признателен за любую помощь .. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.
Заранее спасибо.
Я предлагаю вам написать сервер и клиент как на C++, так и на Java, чтобы скомпоновать, как они работают. Клиент и сервер Java должны иметь возможность разговаривать друг с другом и с клиентом и сервером C++. Таким образом, вы можете диагностировать, у какого конца есть проблема. –