Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #60499 > unrolled thread
| Started by | Malte Forkel <malte.forkel@berlin.de> |
|---|---|
| First post | 2013-11-26 12:23 +0100 |
| Last post | 2013-11-26 12:23 +0100 |
| Articles | 1 — 1 participant |
Back to article view | Back to comp.lang.python
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
Re: How to determine whether client and server are on the same host Malte Forkel <malte.forkel@berlin.de> - 2013-11-26 12:23 +0100
| From | Malte Forkel <malte.forkel@berlin.de> |
|---|---|
| Date | 2013-11-26 12:23 +0100 |
| Subject | Re: How to determine whether client and server are on the same host |
| Message-ID | <mailman.3226.1385465037.18130.python-list@python.org> |
Am 26.11.2013 00:07, schrieb Chris Angelico: > > Two easy ways you could do this. I would be inclined to do what > PostgreSQL and others do, and have an explicit indication that you > want to use a local method: for instance, the name "localhost". Use of > anything else (including "127.0.0.1") means you use TCP/IP as normal, > but the strict word "localhost", which is normally equivalent to the > address 127.0.0.1, would signal your app to use the direct method (for > PostgreSQL, that's a Unix socket rather than a TCP one). This means > you can still force telnet to be used even if you're working locally - > good for debugging. > Unfortunately, I can't rely on the user to use a specific way to specify the (local) host. > Alternatively, you can simply query the current network interfaces for > their IPs, and see if the IP you were given is in that list. I don't > know of a way to do that in core Python, but the C function you need > is getifaddrs(), and this claims to wrap all that up nicely: > > https://pypi.python.org/pypi/netifaces > > This method would detect, for instance, that calling up 192.168.0.19 > port 12345 is a local lookup, because eth0 has address 192.168.0.19, > and that 192.168.2.2 port 54321 is local too, because wlan0 has > address 192.168.2.2. > That's a very nice module which I wasn't aware of. But if possible I wouldn't want to force the user to install a (binary) extension module. Finding the right module for his platform and version of Python might be too difficult. > If you aren't too concerned with running this on multiple platforms > (which seems likely - working with the local filesystem implies you > know a lot about what the server and client are doing), you could > simply parse the output of 'ip addr', 'ipconfig', 'ifconfig', or some > equivalent network utility for your platform. That might be easier > than playing with the package, depending on environment. > The application is run under Windows as well. So I'd have to parse the output of other network utilities as well, possibly in a variety of languages. Thanks for your suggestions! I'm sorry I'm so picky. May be there just is no easy solution. Malte
Back to top | Article view | comp.lang.python
csiph-web