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