У нас есть приложение на Java, использующее сокеты с включенным поддержкой TCP.
Socket.setKeepAlive (true) http://docs.oracle.com/javase/6/docs/api/java/net/Socket.html#setKeepAlive(boolean)
Наши тесты показывают, что функция поддержки активности работает в Windows правильнохост, но не на хосте Linux (Ubuntu Lucid).
Копая, мы обнаружили, что числовая константа SO_KEEPALIVE, используемая в Java, похоже, не соответствует константе, используемой в Linux
В java:jdk / src / share / classes / java / net / SocketOptions.java:
public final static int SO_KEEPALIVE = 0x0008;
В Solaris: include / sys / socket.h
#define SO_KEEPALIVE 0x0008 /* keep connections alive */
В Linux Sparc, MIPS,Alpha и PARISC: /usr/src//linux-headers-2.6.32-19/arch/sparc/include/asm/socket.h:
#define SO_KEEPALIVE 0x0008
В других Linux (x86 и amd64):/usr/include/asm-generic/socket.h:
\#define SO_KEEPALIVE 9
Мы думаем, что это объясняет, почему в Linux не работает программа live alive.Кто-нибудь может предложить другую причину или решение?
Cheers Marc