LinuxでQT 4.8を使用しています。
UDP データグラムを作成し、特定のネットワーク インターフェイスから送信したいと考えています。
私は2つのインターフェースを持っています:
- WLan: IP 192.168.1.77 および MAC アドレス
- Eth: IP 192.168.1.80 および別の MAC アドレス
これらのネットワーク インターフェイスのいずれかを選択し、両方が有効になっている場合、そこからデータグラムを書き込むにはどうすればよいですか?
LinuxでQT 4.8を使用しています。
UDP データグラムを作成し、特定のネットワーク インターフェイスから送信したいと考えています。
私は2つのインターフェースを持っています:
これらのネットワーク インターフェイスのいずれかを選択し、両方が有効になっている場合、そこからデータグラムを書き込むにはどうすればよいですか?
簡単な答えは、eth インターフェイスのアドレスの *1 つにバインドすることです。
Qt には、このための非常にクリーンなライブラリがあります。しかし、面倒なことをする必要があるときは、 ACE C++ ライブラリのようなものを使用します。
とにかく、これはあなたが始めるためのものですが、 QtCreator またはgoogleでより具体的な例を調べる必要があります:
QUdpSocket socket;
// I am using the eth interface that's associated
// with IP 192.168.1.77
//
// Note that I'm using a "random" (ephemeral) port by passing 0
if(socket.bind(QHostAddress("192.168.1.77"), 0))
{
// Send it out to some IP (192.168.1.1) and port (45354).
qint64 bytesSent = socket.writeDatagram(QByteArray("Hello World!"),
QHostAddress("192.168.1.1"),
45354);
// ... etc ...
}