2013-06-21 2 views
4

저는 리눅스에서 QT 4.8을 사용하고 있습니다.QT의 특정 네트워크 인터페이스를 통해 데이터 그램을 쓰는 방법은 무엇입니까?

UDP 데이터 그램을 작성하고 특정 네트워크 인터페이스에서 보내고 싶습니다.

나는 2 인터페이스를 가지고 :

  1. 무선 랜 : IP 192.168.1.77 및 MAC 주소
  2. ETH : IP 192.168.1.80 및

가 어떻게 이들 중 하나를 선택할 수있는 다른 MAC 주소 네트워크 인터페이스 및 둘 다 활성화되어있을 때 거기에서 데이터 그램을 씁니 까?

답변

4

짧은 대답은 bind to *one of the addresses of the eth interface입니다.

Qt는 꽤 끔찍하게 깨끗합니다. library for this. 그러나 내가 더러운 것을 내려야 할 때는 ACE C++ library과 같은 것을 사용할 것입니다.

어쨌든, 여기 당신이 시작하는 일이다, 그러나 당신은보다 구체적인 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 ... 
} 
관련 문제