QTfrontend/netudpserver.cpp
author unc0rr
Fri, 01 May 2009 09:01:44 +0000
changeset 2021 a591afb43768
parent 1066 1f1b3686a2b0
child 4976 088d40d8aba2
permissions -rw-r--r--
Some changes in try to fix issue when you enter room with painted map, but frontend shows generated one (most probably bug is triggered by template filters) Untested.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
486
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
     1
/*
1066
1f1b3686a2b0 Update copyright headers a bit
unc0rr
parents: 883
diff changeset
     2
 * Hedgewars, a free turn based strategy game
883
07a568ba44e0 Update copyright info in source files headers
unc0rr
parents: 659
diff changeset
     3
 * Copyright (c) 2007, 2008 Ulyanov Igor <iulyanov@gmail.com>
486
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
     4
 *
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
     7
 * the Free Software Foundation; version 2 of the License
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
     8
 *
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
    12
 * GNU General Public License for more details.
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
    13
 *
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
    14
 * You should have received a copy of the GNU General Public License
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
    15
 * along with this program; if not, write to the Free Software
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
    16
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
    17
 */
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
    18
413
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    19
#include <QUdpSocket>
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    20
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    21
#include "netudpserver.h"
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    22
633
9050a949db21 Half implement registration in servers list
unc0rr
parents: 486
diff changeset
    23
HWNetUdpServer::HWNetUdpServer(QObject *parent, const QString & descr, quint16 port) :
9050a949db21 Half implement registration in servers list
unc0rr
parents: 486
diff changeset
    24
  HWNetRegisterServer(parent, descr, port)
413
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    25
{
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    26
  pUdpSocket = new QUdpSocket(this);
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    27
  pUdpSocket->bind(46631);
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    28
  connect(pUdpSocket, SIGNAL(readyRead()), this, SLOT(onClientRead()));
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    29
}
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    30
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    31
void HWNetUdpServer::onClientRead()
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    32
{
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    33
  while (pUdpSocket->hasPendingDatagrams()) {
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    34
    QByteArray datagram;
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    35
    datagram.resize(pUdpSocket->pendingDatagramSize());
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    36
    QHostAddress clientAddr;
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    37
    quint16 clientPort;
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    38
    pUdpSocket->readDatagram(datagram.data(), datagram.size(), &clientAddr, &clientPort);
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    39
    if(QString("%1").arg(datagram.data())==QString("hedgewars client")) {
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    40
      // send answer to client
417
bc7fea9abd9c randomly chosen ports
displacer
parents: 413
diff changeset
    41
      pUdpSocket->writeDatagram("hedgewars server", clientAddr, clientPort);
413
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    42
    }
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    43
  }
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    44
}
659
5eafb20566f1 - Fix some stupid object casts
unc0rr
parents: 637
diff changeset
    45
5eafb20566f1 - Fix some stupid object casts
unc0rr
parents: 637
diff changeset
    46
void HWNetUdpServer::unregister()
5eafb20566f1 - Fix some stupid object casts
unc0rr
parents: 637
diff changeset
    47
{
5eafb20566f1 - Fix some stupid object casts
unc0rr
parents: 637
diff changeset
    48
  deleteLater();
5eafb20566f1 - Fix some stupid object casts
unc0rr
parents: 637
diff changeset
    49
}