This Java module provides JNA support for setsockopt with a limited degree of platform interoperability.
Usage:
Socket sock;
...
JNASockOpt.setSockOpt(sock, JNASockOptionLevel.SOL_SOCKET, JNASockOption.SO_RCVBUF, 6553600);
...
JNASockOpt.setSockOpt(sock, JNASockOptionLevel.SOL_TCP, JNASockOption.TCP_KEEPIDLE, 60);
An IOException will be thrown if the socket option is not support or if
jnasockopt
does not know how to support it.
See JNASockOptTest.java for examples.
$ git clone git://github.com/abligh/jnasockopt.git
To be completed, but it should be obvious.
Support for another platform can be generated relatively easily using the perl program
discover.pl
.
Steps:
- Ensure you have a C compiler installed (
gcc
assumed currently) and headers - Run
discover.pl
and check that produces some output - discard it for now - Edit
discover.pl
and add any additional includes necessary for your platform - Add any missing socket options or socket option levels to
JNASockOption.java
andJNASockOptionLevel.java
. Keep these files in alphabetical order - Run
discover.pl
and check that produces some output redirecting the output to a file - Rename the classes in your generated file appropriately
Any platform other than Linux / Mac. Contributions welcome.
- The original code was written by Alex Bligh.
Please see the file called LICENSE.