2016-05-12 7 views
0

Arduino UnoからUDPパケットを受信しようとしています。パケットはコンピュータによって受信されます(wiresharkで表示されます)が、Qtアプリケーションには表示されません。そこに私のUDPクラスの一部:UDPの到着パケットがQtに表示されない

#include "udp.h" 

Udp::Udp(QHostAddress adr, quint16 pr) : QObject() 
{ 
    address.setAddress(adr.toString()); 
    port = pr; 
    socket = new QUdpSocket(); 
    status = socket->bind(address,port); 
    connect(socket,SIGNAL(readyRead()), this, SLOT(readUdp())); 
} 

void Udp::sendUdp(QByteArray out) 
{ 
    socket->writeDatagram(out,address,port); 
} 

QByteArray Udp::readUdp() 
{ 
    QByteArray input; 
    input.resize(socket->pendingDatagramSize()); 
    QHostAddress sender; 
    quint16 senderPort; 
    socket->readDatagram(input.data(),input.size(), 
          &sender,&senderPort); 

    return input; 
} 

socket-> pendingDatagramSize()は0を返します(-1時々)。

+0

あなたのコードにエラーはありません。ソケットが変更されているために読み込み可能なデータグラムが見つからない唯一の理由です。 – Marco

答えて

0

私はQTを知らないが、バークレーソケットAPIを使用しているとき、あなたはあなたのアプリケーションが実行されている場合、あなたはターミナルでは、netstat -lを実行することができます

エンディアン

port = htons(pr); 
を確保する必要があります。あなたのアプリケーションはリストに表示されるべきです

関連する問題