WakeOnLan mit wxWidgets - Socket not initialised



  • Hallo,

    ich habe einen WakeOnLan Code gefunden, und möchte diesen gerne zum laufen bekommen, leider bekomme ich beim SendTo() folgenden Dialog:

    "wxWidgets Debug Alert:
    ../../src/common/socket.cpp(2073): assert "m_impl" failed in SendTo():
    Socket not initialised
    Do you want to stop the program?
    You can also choose [Cancel] to suppress further warnings."

    Danach bekomme ich ein SIGSEGV (Nein) oder ein SIGTRAP (Ja) signal, je nachdem was ich antworte.

    Hier der Code:

    wxByte magicpacket[108];
    			wxString macaddress="001b78aae562";
    			wxInt32 i;
    
    			for(i=0; i<6; i++)
    				magicpacket[i] = 0xff;
    
    			for(i=0; i<6; i++)
    				magicpacket[i+6] = HexStrToInt(macaddress.Mid(i*2,2));
    
    			for(i=0; i<15; i++)
    				memcpy(&magicpacket[(i+2)*6],&magicpacket[6],6);
    
    			wxIPV4address BroadcastAddress;
    			BroadcastAddress.Hostname("255.255.255.255");
    			BroadcastAddress.Service(9);
    
    			wxDatagramSocket BroadcastSocket(BroadcastAddress, wxSOCKET_NOWAIT);
    
    			BroadcastSocket.SendTo(BroadcastAddress, magicpacket, sizeof(magicpacket));
    
    public:
    		static int HexStrToInt(wxString Hex)
    		{
    			if(Hex.SubString(1,2) != "0X")
    				Hex = "0x" + Hex;
    
    			return wxAtoi(Hex);
    		}
    

    Hoffe ihr könnt mir helfen. Vielen Dank im Voraus.

    Mit freundlichen Grüßen,
    DarkBug



  • Ich weiss nicht ob es daran liegt, aber steht im Code, vielliecht in der OnInit

    wxSocketBase::Initialize();
    

    weil laut Doku...

    ...Perform the initialization needed in order to use the sockets...



  • Danke für deine Antwort. In der Doku steht aber auch:

    This function is called from wxSocket constructor implicitly and so normally doesn't need to be called explicitly.

    Aber auch mit einem

    wxSocketBase::Initialize();
    

    in der OnInit() funktioniert es nicht. Genau der gleiche Fehler.

    Hoffe auf weitere Lösungsvorschläge.


Anmelden zum Antworten