Right now, NanoHTTPD doesnt expose the raw sockets. There is a request to add "getSocket()" or similar to the session class and that will allow interrogation of the IP address and solve what you're looking for. Give me a couple of days to get the code together and check back & we should have you on your way!
[EDIT]
In your "serve()" method, if you call
Map<String, String> headers = session.getHeaders();
And then, look for either "remote-addr" or "http-client-ip" in the map, you ought to have what you need. That is, the result of calling "getInetAddress()" on the server socket (which according to the Java documentation is the "the remote IP address to which this socket is connected"). Note, if those headers arent present in the map it'll probably be down to you having an older version of the code. Version 2.0.5 was released today, and they're definitely present.