TCP_KEEPALIVE unter Borland



  • Hallo Leute,

    ich möchte Keepalive für meinen Socket verwenden.

    Das heißt ich mchte folgenden funktionsaufruf ausführen:

    #include <Winsock2.h>
    #include <Mstcpip.h>
    
    tcp_keepalive tcpvalues;
    
    tcpvalues.onoff = 1;
    tcpvalues.keepalivetime = 1000;
    tcpvalues.keepaliveinterval = 100;
    WSAIoctl(hSocket,SIO_KEEPALIVE_VALS,..)
    

    nun bekomm ich aber beim compilieren des headers Mstcpip.h folgende Fehler in der mstcpip.h

    [BCC32 Fehler] Mstcpip.h(503): E2268 Aufruf der undefinierten Funktion '__builtin_alignof'
    [BCC32 Fehler] Mstcpip.h(503): E2108 Ungültige Verwendung von typedef 'IN_ADDR'
    [BCC32 Fehler] Mstcpip.h(543): E2108 Ungültige Verwendung von typedef 'IN_ADDR'

    Woran kann das liegen? (Mit VS kommen da keine Fehler)

    MfG



  • wenn ich das Header File mstcpip.h im RAD Studio durch das alte Header File von Borland 6 ersetze Compiliert der erst mal.

    Woran liegt das?



  • also ich habe mal in dem Codegear verzeichnis nach der funktion __builtin_alignof gesucht konnte sie aber nicht finden.

    Hat jemand eine Idee?



  • Das dürfte irgendetwas Microsoft-spezifisches sein, für das C++Builder noch keinen Workaround enthält. In C++Builder 2009 steht in Mstcpip.h folgendes:

    #define INET_IS_ALIGNED(Pointer, Type) \
       (((ULONG_PTR)Pointer & (__builtin_alignof(Type)-1)) == 0)
    

    In C++Builder 2010 wurde das Problem so behoben:

    #if defined(__CODEGEARC__)
    #define INET_IS_ALIGNED(Pointer, Type) \
       (((ULONG_PTR)Pointer & (__alignof(Type)-1)) == 0)
    #else
    #define INET_IS_ALIGNED(Pointer, Type) \
       (((ULONG_PTR)Pointer & (__builtin_alignof(Type)-1)) == 0)
    #endif
    

Anmelden zum Antworten