00001
00002
00003
00004
00005
00006
00007
00008
00010
00011 #ifndef __BROADCAST_H__
00012 #define __BROADCAST_H__
00013
00014 #include <qsocketdevice.h>
00015
00017
00019
00020 class QBroadcastSocket : public QSocketDevice
00021 {
00022 public:
00023
00024 QHostAddress m_address;
00025 Q_UINT16 m_port;
00026 struct ip_mreq m_imr;
00027
00028 public:
00029
00030 QBroadcastSocket( QString sAddress, Q_UINT16 nPort )
00031 : QSocketDevice( QSocketDevice::Datagram )
00032 {
00033 m_address.setAddress( sAddress );
00034 m_port = nPort;
00035
00036 int one = 1;
00037
00038 if ( setsockopt( socket(), SOL_SOCKET, SO_BROADCAST, &one, sizeof( one )) < 0)
00039 {
00040 VERBOSE(VB_IMPORTANT, QString( "QBroadcastSocket: setsockopt - SO_BROADCAST Error" ));
00041 }
00042
00043 setAddressReusable( true );
00044
00045 bind( m_address, m_port );
00046 }
00047
00048 virtual ~QBroadcastSocket()
00049 {
00050 int zero = 0;
00051
00052 setsockopt( socket(), SOL_SOCKET, SO_BROADCAST, &zero, sizeof( zero ));
00053 }
00054 };
00055
00056 #endif