Thread: Obtaining client IP address
Hi, I need to have a db table containing all connected clients (of a distributed application) and among other info, their IP. If both the client and the server are on the same LAN, no problem, the client can supply it's own info. But if they are connected via some sort of bridge/router/NAT? For instance, a client on a LAN connects to a server over the Internet? The client has no idea what public IP it has. The server ought to know... however I haven't found how I could get this info into my query. What I need is some sort of procedure whereby the client enrolls onto the system and supplies the info... I hope I made my self clear. If not I can try and be more specific! Alex.
On Sat, Feb 25, 2006 at 12:16:31AM +0100, Alexis Paul Bertolini wrote: > The client has no idea what public IP it has. The server ought to > know... however I haven't found how I could get this info into my query. What version of PostgreSQL are you running? In 8.0 and later you can use inet_client_addr(). http://www.postgresql.org/docs/8.1/interactive/functions-info.html I forget if earlier versions have a way to get the client's IP address without resorting to hacks (e.g., writing a function in a privileged language like plperlu and calling netstat or lsof). -- Michael Fuhr
Michael Fuhr wrote: > On Sat, Feb 25, 2006 at 12:16:31AM +0100, Alexis Paul Bertolini wrote: > >> The client has no idea what public IP it has. The server ought to >> know... however I haven't found how I could get this info into my query. >> > > What version of PostgreSQL are you running? In 8.0 and later you > can use inet_client_addr(). > > http://www.postgresql.org/docs/8.1/interactive/functions-info.html > > I forget if earlier versions have a way to get the client's IP > address without resorting to hacks (e.g., writing a function in a > privileged language like plperlu and calling netstat or lsof). > > Mmmm, I didn't spot that one, but it did the trick! Thanks! Alex.