Async 1.8.0
AsyncFramedTcpClient_demo.cpp

An example of how to use the FramedTcpConnection class in a client

#include <iostream>
#include <AsyncTcpClient.h>
using namespace std;
using namespace Async;
class MyClass : public sigc::trackable
{
public:
MyClass(void)
{
con = new TcpClient<FramedTcpConnection>("localhost", 12345);
con->connected.connect(mem_fun(*this, &MyClass::onConnected));
con->disconnected.connect(mem_fun(*this, &MyClass::onDisconnected));
con->frameReceived.connect(mem_fun(*this, &MyClass::onFrameReceived));
con->connect();
}
~MyClass(void)
{
delete con;
}
private:
void onConnected(void)
{
cout << "Connection established to " << con->remoteHost() << "...\n";
size_t bufsize = 10000000;
char *buf = new char[bufsize];
for (size_t i=0; i<bufsize; ++i) { buf[i] = i & 0xff; }
cout << "Sending 3x frames to the server..." << endl;
con->write(buf, bufsize/4);
con->write(buf, bufsize/2);
con->write(buf, bufsize);
cout << "Sending QUIT to server" << endl;
con->write("QUIT", 4);
delete [] buf;
}
void onDisconnected(FramedTcpConnection *con,
{
cout << "Disconnected from " << con->remoteHost() << "...\n";
Application::app().quit();
}
void onFrameReceived(FramedTcpConnection *con, vector<uint8_t>& frame)
{
char *str = reinterpret_cast<char *>(frame.data());
string html(str, str+frame.size());
cout << html;
}
};
int main(int argc, char **argv)
{
MyClass my_class;
app.exec();
}
The core class for writing asyncronous cpp applications.
A TCP connection with framed instead of streamed content.
Contains a class for creating TCP client connections.
An application class for writing non GUI applications.
void exec(void)
Execute the application main loop.
A TCP connection with framed instead of streamed content.
A class for creating a TCP client connection.
const IpAddress & remoteHost(void) const
Return the IP-address of the remote host.
DisconnectReason
Reason code for disconnects.
virtual int write(const void *buf, int count)
Write data to the TCP connection.
Namespace for the asynchronous programming classes.