All,
Below is the client request code which makes a CONNECT request to remote
SERVER (having IP & PORT#) but gives error code during send() process -
---
#include <iostream>
#include <string>
#include
namespace opp = boost::asio::ip;
struct PacketFormat
{
unsigned short length; //Length
int sequenceNumber;
};
int main(int argc, char* argv[])
{
std::string port = "8000";
std::string hostname = "X.X.X.X";
boost::asio::io_service io_service;
opp::tcp::resolver resolver(io_service);
opp::tcp::resolver::query query(hostname, port);
opp::tcp::resolver::iterator iter = resolver.resolve(query);
opp::tcp::resolver::iterator end; // End marker.
// Looking for a successful endpoint connection
opp::tcp::socket socket(io_service);
boost::system::error_code error =
boost::asio::error::host_not_found;
while (error && iter != end)
{
socket.close();
socket.connect(*iter++ , error);
}
if (error)
throw boost::system::system_error(error);
std::cout << "Connected ..Thanks!! \n" << std::endl;
PacketFormat pf; // where PacketFormat is struct defined
pf.length = 236;
pf.sequenceNumber = 2;
std::cout << "Sending Logon Message.. . ..!! \n" <<
std::endl;
std::size_t n = opp::tcp::socket::send(iter,
boost::asio::buffer(&pf));
if (n < 0)
std::cerr << "ERROR writing to Server .. . ..\n" << std::endl;
std::cout << "Logon Message Sent.. . ..Thanks!!\n" <<
std::endl;
if (n < 0)
std::cerr << "ERROR writing to Server .. . ..\n" <<
std::endl;
std::cout << "Logon Message Sent.. . ..Thanks!!\n" <<
std::endl;
return 0;
}
__
The error message obtained is -
--
# g++ testclient.cpp -o testclient -lboost_system -lboost_thread
testclient.cpp: In function âint main(int, char**)â:
testclient.cpp:42: error: no matching function for call to
âbuffer(PacketFormat*)â
/usr/local/include/boost/asio/buffer.hpp:704: note: candidates are:
boost::asio::mutable_buffers_1 boost::asio::buffer(const
boost::asio::mutable_buffer&)
/usr/local/include/boost/asio/buffer.hpp:717: note:
boost::asio::mutable_buffers_1 boost::asio::buffer(const
boost::asio::mutable_buffer&, size_t)
/usr/local/include/boost/asio/buffer.hpp:733: note:
boost::asio::const_buffers_1 boost::asio::buffer(const
boost::asio::const_buffer&)
/usr/local/include/boost/asio/buffer.hpp:746: note:
boost::asio::const_buffers_1 boost::asio::buffer(const
boost::asio::const_buffer&, size_t)
/usr/local/include/boost/asio/buffer.hpp:762: note:
boost::asio::mutable_buffers_1 boost::asio::buffer(void*, size_t)
/usr/local/include/boost/asio/buffer.hpp:772: note:
boost::asio::const_buffers_1 boost::asio::buffer(const void*, size_t)
__
Please help for L#42 "tcp::socket::send()" proper call. I believe above
code fine apart from L#42 error.
Thanks!!