Netzwerk

TCP

Server

Client

Beispiel: Echo-Server/Client

Server

// main.cpp
#include <QApplication>
#include <QDebug>
#include "EchoServer.h"
 
int main( int argc, char *argv[] )
{
  QApplication app( argc, argv );
  EchoServer server;
  if( !server.start() )
  {
    qDebug() << "Error starting echo-server: " << server.errorString();
    return 1;
  }
  qDebug() << "Server running";
  return app.exec();
}
// EchoServer.h
#ifndef ECHOSERVER_H
#define ECHOSERVER_H
 
#include <QTcpServer>
#include <QTcpSocket>
 
class EchoServer : public QTcpServer
{
 
  Q_OBJECT
 
  public:
    EchoServer( const unsigned short int port = 12345 );
    bool start();
 
  private slots:
    void connectClient();
    void echo();
 
  private:
    unsigned short int m_port;
 
};
 
#endif // ECHOSERVER_H
// EchoServer.cpp
#include "EchoServer.h"
 
EchoServer::EchoServer( const unsigned short port ) : m_port( port )
{
  connect( this, SIGNAL( newConnection() ), this, SLOT( connectClient() ) );
}
 
 
bool EchoServer::start()
{
  return listen( QHostAddress::Any, m_port );
}
 
 
void EchoServer::connectClient()
{
  QTcpSocket *socket = nextPendingConnection();
  connect( socket, SIGNAL( readyRead() ), this, SLOT( echo() ) );
  connect( socket, SIGNAL( disconnected() ), socket, SLOT( deleteLater() ) );
}
 
 
void EchoServer::echo()
{
  QTcpSocket *socket = dynamic_cast<QTcpSocket *>( sender() );
  if( socket != NULL )
  {
    QByteArray data = socket->readAll();
    socket->write( data );
  }
}

Client

UDP

Server

Client

Beispiel: Echo-Server/Client

Server

Client