QTfrontend/netudpserver.cpp
author Henek
Mon, 11 Apr 2011 00:35:53 +0200
changeset 5138 f991f87969ff
parent 4976 088d40d8aba2
child 5146 7b65e83e261d
permissions -rw-r--r--
now Random Weapons will show the weapon you will get during the other players turns not tested online yet, would be happy if someone could and report to me results
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
4976
088d40d8aba2 Happy 2011 :)
koda
parents: 1066
diff changeset
     3
 * Copyright (c) 2007-2008 Igor Ulyanov <iulyanov@gmail.com>
088d40d8aba2 Happy 2011 :)
koda
parents: 1066
diff changeset
     4
 * Copyright (c) 2008-2011 Andrey Korotaev <unC0Rr@gmail.com>
486
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
     5
 *
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
     6
 * This program is free software; you can redistribute it and/or modify
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
     7
 * it under the terms of the GNU General Public License as published by
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
     8
 * the Free Software Foundation; version 2 of the License
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
     9
 *
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
    10
 * This program is distributed in the hope that it will be useful,
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
    11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
    12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
    13
 * GNU General Public License for more details.
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
    14
 *
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
    15
 * You should have received a copy of the GNU General Public License
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
    16
 * along with this program; if not, write to the Free Software
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
    17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
    18
 */
7ea71cd3acd5 - Change proto version to 4
unc0rr
parents: 468
diff changeset
    19
413
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    20
#include <QUdpSocket>
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    21
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    22
#include "netudpserver.h"
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    23
633
9050a949db21 Half implement registration in servers list
unc0rr
parents: 486
diff changeset
    24
HWNetUdpServer::HWNetUdpServer(QObject *parent, const QString & descr, quint16 port) :
9050a949db21 Half implement registration in servers list
unc0rr
parents: 486
diff changeset
    25
  HWNetRegisterServer(parent, descr, port)
413
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    26
{
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    27
  pUdpSocket = new QUdpSocket(this);
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    28
  pUdpSocket->bind(46631);
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    29
  connect(pUdpSocket, SIGNAL(readyRead()), this, SLOT(onClientRead()));
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
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    32
void HWNetUdpServer::onClientRead()
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    33
{
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    34
  while (pUdpSocket->hasPendingDatagrams()) {
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    35
    QByteArray datagram;
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    36
    datagram.resize(pUdpSocket->pendingDatagramSize());
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    37
    QHostAddress clientAddr;
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    38
    quint16 clientPort;
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    39
    pUdpSocket->readDatagram(datagram.data(), datagram.size(), &clientAddr, &clientPort);
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    40
    if(QString("%1").arg(datagram.data())==QString("hedgewars client")) {
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    41
      // send answer to client
417
bc7fea9abd9c randomly chosen ports
displacer
parents: 413
diff changeset
    42
      pUdpSocket->writeDatagram("hedgewars server", clientAddr, clientPort);
413
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
  }
523f1769f2bc udp server detecting experimental version (added files)
displacer
parents:
diff changeset
    45
}
659
5eafb20566f1 - Fix some stupid object casts
unc0rr
parents: 637
diff changeset
    46
5eafb20566f1 - Fix some stupid object casts
unc0rr
parents: 637
diff changeset
    47
void HWNetUdpServer::unregister()
5eafb20566f1 - Fix some stupid object casts
unc0rr
parents: 637
diff changeset
    48
{
5eafb20566f1 - Fix some stupid object casts
unc0rr
parents: 637
diff changeset
    49
  deleteLater();
5eafb20566f1 - Fix some stupid object casts
unc0rr
parents: 637
diff changeset
    50
}