Um das ganze unter Linux zu testen brauche ich netcat dazu...
netcat-befehl um zu lesen : netcat -u rechnername -l -p 28181
netcat-befehl um zu schreiben : netcat -u rechnername 28180
Probleme:
- Mein Programm empfängt die gesendeten Packete. Jedoch wenn ich das ganze mit m_ReceivedSocket->bind(QHostAddress::LocalHost,28180) initialisiere funktioniert es nicht mehr???
- Es sendet nur das erste Packet und das zweite Mal sendet er genau nichts, wieso?
- Und auch hier sobald ich von Broadcast auf LocalHost wechsle funktioniert nichts mehr...
Hat da jemand eine Ahnung wieso?
Vielen Dank schon mal
Code: Alles auswählen
MyUdpTestProg::MyUdpTestProg()
{
m_SendSocket = new QUdpSocket(this);
m_ReceivedSocket = new QUdpSocket(this);
connect(m_ReceivedSocket , SIGNAL(readyRead()) , this , SLOT(readReceviedSocket()));
connect(m_ReceivedSocket , SIGNAL(error(QAbstractSocket::SocketError)) , this , SLOT(errorHandlingReceivedSocket(QAbstractSocket::SocketError)));
connect(m_SendSocket , SIGNAL(readyRead()) , this , SLOT(readSendSocket()));
connect(m_SendSocket , SIGNAL(error(QAbstractSocket::SocketError)) , this , SLOT(errorHandlingSendSocket(QAbstractSocket::SocketError)));
m_ReceivedSocket->bind(28180);
}
void MyUdpTestProg::readReceviedSocket()
{
QByteArray datagram;
datagram.resize(m_ReceivedSocket->pendingDatagramSize());
m_ReceivedSocket->readDatagram(datagram.data(), datagram.size());
std::cout << "Data : " << datagram.data() << std::endl;
readSendSocket();
sleep(1);
readSendSocket();
}
void MyUdpTestProg::readSendSocket()
{
QByteArray datagram = "hallo";
std::cout << "send hallo" << std::endl;
m_SendSocket->writeDatagram(datagram.data() , datagram.size() , QHostAddress::Broadcast , 28181);
}