A class for creating a TCP server. More...
#include <AsyncTcpServer.h>
A class for creating a TCP server.
This class is used to create a TCP server that listens to a TCP-port. To use it, just create an instance and specify the TCP-port to listen to. When a client connects, a new Async::TcpConnection object is created which is used to do the actual communication. An example of how to use it is shown below.
#include <iostream> #include <AsyncCppApplication.h> #include <AsyncTcpServer.h> using namespace std; using namespace Async; class MyClass : public SigC::Object { public: MyClass(void) { server = new TcpServer("12345"); server->clientConnected.connect(slot(*this, &MyClass::onClientConnected)); server->clientDisconnected.connect( slot(*this, &MyClass::onClientDisconnected)); cout << "Connect using: \"telnet localhost 12345\" from " "another console\n"; } ~MyClass(void) { delete server; } private: TcpServer *server; void onClientConnected(TcpConnection *con) { cout << "Client " << con->remoteHost() << ":" << con->remotePort() << " connected, " << server->numberOfClients() << " clients connected\n"; // We need ONLY to add signal for receive data to the TcpConnection con->dataReceived.connect(slot(*this, &MyClass::onDataReceived)); // Send welcome message to the connected client */ con->write("Hello, client!\n", 15); } void onClientDisconnected(TcpConnection *con, TcpConnection::DisconnectReason reason) { cout << "Client " << con->remoteHost().toString() << ":" << con->remotePort() << " disconnected," << server->numberOfClients() << " clients connected\n"; /* Don't delete the con object, the TcpServer will do it */ } int onDataReceived(TcpConnection *con, void *buf, int count) { // retreive data char *str = static_cast<char *>(buf); string data(str, str+count); cout << data; // Send data back to sender string dataOut = string("You said: ") + data; server->writeOnly(con, dataOut.c_str(), dataOut.size()); // Other way to send to sender //con->write(dataOut.c_str(), dataOut.size()); // Send to other clients if there is more then one connected to server if (server->numberOfClients() > 1) { // Send data back to all OTHER clients dataOut = string("He said : ") + data; server->writeExcept(con, dataOut.c_str(), dataOut.size()); // Send data back to all clients dataOut = string("To all : ") + data; server->writeAll(dataOut.c_str(), dataOut.size()); } return count; } }; int main(int argc, char **argv) { CppApplication app; MyClass my_class; app.exec(); }
Definition at line 126 of file AsyncTcpServer.h.
Async::TcpServer::TcpServer | ( | const std::string & | port_str | ) |
Default constuctor.
port_str | A port number or service name to listen to |
Async::TcpServer::~TcpServer | ( | void | ) |
Destructor.
TcpConnection* Async::TcpServer::getClient | ( | unsigned int | index | ) |
Get the client object pointer from the server.
index | The wanted client by number 0 - numberOfClients()-1 |
int Async::TcpServer::numberOfClients | ( | void | ) |
Get the number of clients that is connected to the server.
int Async::TcpServer::writeAll | ( | const void * | buf, | |
int | count | |||
) |
Write data to all connected clients.
buf | The data buffer | |
count | The number of bytes in the data buffer |
int Async::TcpServer::writeExcept | ( | TcpConnection * | con, | |
const void * | buf, | |||
int | count | |||
) |
Send data to all connected clients except the given client.
con | The TcpConnection object not to send to | |
buf | The data buffer | |
count | The number of bytes in the data buffer |
int Async::TcpServer::writeOnly | ( | TcpConnection * | con, | |
const void * | buf, | |||
int | count | |||
) |
Send data only to the given client.
con | The TcpConnection object to send to | |
buf | The data buffer | |
count | The number of bytes in data buffer |
SigC::Signal1<void, TcpConnection *> Async::TcpServer::clientConnected |
A signal that is emitted when a client connect to the server.
con | The connected TcpConnection object |
Definition at line 183 of file AsyncTcpServer.h.
SigC::Signal2<void, TcpConnection *,TcpConnection::DisconnectReason> Async::TcpServer::clientDisconnected |
A signal that is emitted when a client disconnect from the server.
con | The disconnected TcpConnection object |
Definition at line 191 of file AsyncTcpServer.h.