1

QUdpSocket ブロードキャスターをセットアップしています。Wireshark で出力を表示すると、パケットの形式が正しくないと表示されます。パケットを調べると、イーサネット トレーラーで送信されていないようです。これを自分で発行する必要がありますか、それとも別の問題がありますか? 以下の私のコードは少し凝縮されています。クロスオーバー ケーブルを介して接続されている場合、受信デバイス (マイクロコントローラー) はパケットを認識して応答することに注意してください (wireshark で見られるように)。UDP トラフィックを許可するスイッチド ネットワークでこれを使用できるように、不正なフレームがないことを確認したいと考えています。

ありがとう

const quint16 s_packetHeader = 0x5A5A;
const quint16 s_sendReadBackRegisters = 0x0203;

m_udpSocketWriter= new QUdpSocket(this);
QByteArray datagram;
QDataStream ds(&datagram, QIODevice::WriteOnly);
ds.setVersion(QDataStream::Qt_4_8);
ds << s_packetHeader << s_sendReadBackRegisters;
m_udpSocketWriter->writeDatagram(datagram.data(), datagram.size(), QHostAddress::Broadcast, 5000);

およびwiresharkからの出力

"1243","886.645245000","172.27.1.117","255.255.255.255","UDP","46","Source port: 58411  Destination port: 5000[Malformed Packet]"

0000   ff ff ff ff ff ff d4 3d 7e 31 e0 27 08 00 45 00  .......=~1.'..E.
0010   00 20 38 6b 00 00 80 11 54 d2 ac 1b 01 75 ff ff  . 8k....T....u..
0020   ff ff e4 2b 13 88 00 0c fe 34 5a 5a 02 03        ...+.....4ZZ..

最後の 4 バイトは、送信したデータ 5A 5A 02 03 に対応していることに注意してください。

Google 画像検索によると、パケットにはトレーラー ビットがありません... 私はネットワークの専門家ではありませんが、完全に推測です。

Windows 7 x64、VS2010、QT 4.8-最新 x64

4

0 に答える 0