0

UDP ソケットがメッセージの送信に使用したポート番号を取得する方法はありますか?

私がやりたいことは、udp データグラムを誰かに送信し、その送信ポートをリッスンすることです。

たとえば、次のコードでは:

QUdpSocket *s = new QUdpSocket(this);
s.writeDataGram(theData,theIp,thePort);

送信ポートが何であれ、ソケット s を自動的にバインドしますか?

もしそうなら、その送信ポートをリッスンできますか?

4

2 に答える 2

1

ソケットをポート、アドレスにバインドし、データを送信する前にBindModeを指定すると安全です。

ソケットがポートとアドレスにバインドされると、指定されたポートに到着するとreadyRead()UDP Datagramが発行されます。

したがって、信号をキャプチャし、readyRead()それに応じてデータを処理できます。つまり、ポートをリッスンする必要はありません。ソケットsをポートthePortにバインドしないreadyRead()と、UDP データグラムの到着時にシグナルが送信されません。

于 2012-07-17T06:24:54.487 に答える
0

マニュアルページからreadDatagram

qint64 QUdpSocket::readDatagram ( char * データ, qint64 maxSize, QHostAddress * アドレス = 0, quint16 * ポート = 0 )

maxSize バイト以下のデータグラムを受信し、data に格納します。
送信者のホスト アドレスとポートは、*address と *port に格納されます。
(ポインタが 0 でない限り)。

データグラムを受信するには、まずソケットを特定の UDP ポートにバインドする必要があります。次に、受信したデータグラムの送信元ポートを取得するには、 のport引数にゼロ以外のパラメーターを指定しますreadDatagram

于 2012-07-17T09:05:04.017 に答える