QUdpSocket liefert Fehler, aber senden klappt trotzdem

Alles rund um die Programmierung mit Qt
Antworten
M@g!ndo$ch
Beiträge: 70
Registriert: 7. Januar 2007 14:56

QUdpSocket liefert Fehler, aber senden klappt trotzdem

Beitrag von M@g!ndo$ch »

Hi,

ich habe eine Klasse implementiert, welche UdpPakete verschicken soll.

Das funktioniert auch wunderbar, obwohl ein Aufruf von QUdpSocket::error() nach dem Versenden den Fehler "QAbstractSocket::UnknownSocketError" meldet.

Ob es funktioniert, habe ich mittels Wireshark auf nem' anderen Computer überprüft. Da kommen alle Pakete trotz Fehlermeldung wie erwartet an ^^

Hier der Code der Klasse:

Code: Alles auswählen

#include "UdpSender.h"

UdpSender::UdpSender(int iPort, QObject *parent)
:QObject(parent)
{
	bool bResult = false;
	
	QCoreApplication *pApp = QCoreApplication::instance();
	bResult = connect(pApp,SIGNAL(aboutToQuit()),this,SLOT(closeSocket()));
	
	m_iPort = iPort;
	m_pSocket = NULL;
	
	m_oIpAddress.clear();
	m_oIpAddress.setAddress(ConnectionSetupDialog::getIpAddress());	
}

UdpSender::~UdpSender()
{
	delete m_pSocket;	
}

void UdpSender::closeSocket()
{
	m_pSocket->close();
}

void UdpSender::socketErrorSlot(QAbstractSocket::SocketError)
{
	QString oErrorString = m_pSocket->errorString();
	
	emit userMessage(CRITICAL,"Socket Error", oErrorString);		
}

void UdpSender::hostIpAddressChangedSlot(QString oIpAddress)
{
	m_oIpAddress.clear();
	m_oIpAddress.setAddress(oIpAddress);	
}

void UdpSender::sendDatagramSlot(QByteArray oDgrm)
{
	bool bResult = false;
	
	if(m_pSocket == NULL)
	{
		m_pSocket = new QUdpSocket();
		qRegisterMetaType<QAbstractSocket::SocketError>();
		bResult = connect(m_pSocket,SIGNAL(error(QAbstractSocket::SocketError)),this,SLOT(socketErrorSlot(QAbstractSocket::SocketError)));
	}
	else
	{
		//socket alread created, therefore nothing needs to be done here	
	}
	
	m_pSocket->writeDatagram(oDgrm,m_oIpAddress,m_iPort);
	qDebug() << m_pSocket->error();
	emit datagramSent(oDgrm);
}
Kann sich das jemand von euch erklären?

Gruß M@g
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

In der Liste der möglichen Fehlermeldungen gibt es zumindest keine Meldung, daß kein Fehler passiert ist. Ich würde deswegen nur das error-Signal abfragen.
Antworten