[solved] QUdpSocket
Verfasst: 23. Juni 2010 16:46
Hallo Leute ich habe ein kleines Testprog geschrieben um auf einem Port Packete zu empfangen und um auf einem anderen Port was zu versenden über UDP
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
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);
}