471,350 Members | 1,609 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 471,350 software developers and data experts.

Two ethernet cards/networks (still)

There is a lot to stuff that seems to skirt around this issue (most of which
has to do with finding your IP address), but I can't find anything that
explains how to write a client that (in my case) needs to collect some
information from some equipment on a private network/Ethernet card, then
transmit that info on the other Ethernet card/"outside" network to another
program (which will put it into a db).

"binding to a specific address is almost never used for a client", sez
Foundations of Python Network Programming, but is that how it's done?? Each
card has a fixed IP address. It's on Windows at this time if that makes any
difference.

Thanks!

Bob
Sep 7 '06 #1
3 1817
Bob Greschke wrote:
There is a lot to stuff that seems to skirt around this issue (most of which
has to do with finding your IP address), but I can't find anything that
explains how to write a client that (in my case) needs to collect some
information from some equipment on a private network/Ethernet card, then
transmit that info on the other Ethernet card/"outside" network to another
program (which will put it into a db).

"binding to a specific address is almost never used for a client", sez
Foundations of Python Network Programming, but is that how it's done?? Each
card has a fixed IP address. It's on Windows at this time if that makes any
difference.
The reason that "binding to a specific address is almost never used for
a client" is because it's the server destination address that the
network layer will use to determine which interface is used to
communicate with a specific server host.

Suppose your network setup looks like this:
+-------------------+------------------------+ Network A
|
|
|
| 192.168.12.34/24
|
+--------+--------+
| |
| |
| YOUR HOST |
| |
| |
+--------+--------+
|
| 201.46.34.22/24
|
|
|
+-------------------+----------+-------------+ Network B
|
+
+--------+--------+
| router |
| to internet |
+-----------------+

If your client program tries to communicate with, say, 192.168.12.18
then by the IP network layer will automatically select network A as the
medium, since the destination is local to that network. If you then want
to communicate the results to 201.46.34.118 then network B will be used,
again because the destination is local to that network (its first 24
bits are the same as the first 24 bits of the destination).

In this case the router on network B will almost certainly be the
default route for the host, as it's the way to everywhere else.

This isn't really Python-related, so I hope it answers your question!

regards
Steve
--
Steve Holden +44 150 684 7255 +1 800 494 3119
Holden Web LLC/Ltd http://www.holdenweb.com
Skype: holdenweb http://holdenweb.blogspot.com
Recent Ramblings http://del.icio.us/steve.holden

Sep 7 '06 #2

"Steve Holden" <st***@holdenweb.comwrote in message
news:ma*************************************@pytho n.org...
Bob Greschke wrote:
The reason that "binding to a specific address is almost never used for a
client" is because it's the server destination address that the network
layer will use to determine which interface is used to communicate with a
specific server host.

Suppose your network setup looks like this:
+-------------------+------------------------+ Network A
|
|
|
| 192.168.12.34/24
|
+--------+--------+
| |
| |
| YOUR HOST |
| |
| |
+--------+--------+
|
| 201.46.34.22/24
|
|
|
+-------------------+----------+-------------+ Network B
|
+
+--------+--------+
| router |
| to internet |
+-----------------+

If your client program tries to communicate with, say, 192.168.12.18 then
by the IP network layer will automatically select network A as the medium,
since the destination is local to that network. If you then want to
communicate the results to 201.46.34.118 then network B will be used,
again because the destination is local to that network (its first 24 bits
are the same as the first 24 bits of the destination).

In this case the router on network B will almost certainly be the default
route for the host, as it's the way to everywhere else.

This isn't really Python-related, so I hope it answers your question!

regards
Steve
--
Steve Holden +44 150 684 7255 +1 800 494 3119
Holden Web LLC/Ltd http://www.holdenweb.com
Skype: holdenweb http://holdenweb.blogspot.com
Recent Ramblings http://del.icio.us/steve.holden
Nice explanation! Thanks! You mean I don't have to do anything special??
That sounds suspiciously easy. :)

To muddy the water a little the equipment I want to get info from (some
seismic digitizing/recording equipment) comes back to us from the field with
the IP addresses set to whatever that last user needed. What we do now is
put the unit(s) on the bench, connect them to the private network and use a
broadcast address (like 255.255.255.255) and a specific port number to query
and see who is connected. Then we (a program) can get in (login, basically)
and reset the all of the IPs to the same subnet to proceed with checkout,
calibration, etc. We have to disconnect from (or disable the card for) the
outside network when we do this discovery or else the program discovers all
of these instruments that we have running in the building (monitoring a
seismic pier, in people's offices, etc.). I'm guessing here we will still
need to do this? It's not a biggie, but finding a way to not have to do
this was what started this whole thing. Once the program knows which
instruments it found on the private network it doesn't matter. It will only
work on those ones.

Thanks!

Bob
Sep 10 '06 #3
Bob Greschke wrote:
"Steve Holden" <st***@holdenweb.comwrote in message
news:ma*************************************@pytho n.org...
>>Bob Greschke wrote:
The reason that "binding to a specific address is almost never used for a
client" is because it's the server destination address that the network
layer will use to determine which interface is used to communicate with a
specific server host.

Suppose your network setup looks like this:
+-------------------+------------------------+ Network A
|
|
|
| 192.168.12.34/24
|
+--------+--------+
| |
| |
| YOUR HOST |
| |
| |
+--------+--------+
|
| 201.46.34.22/24
|
|
|
+-------------------+----------+-------------+ Network B
|
+
+--------+--------+
| router |
| to internet |
+-----------------+

If your client program tries to communicate with, say, 192.168.12.18 then
by the IP network layer will automatically select network A as the medium,
since the destination is local to that network. If you then want to
communicate the results to 201.46.34.118 then network B will be used,
again because the destination is local to that network (its first 24 bits
are the same as the first 24 bits of the destination).

In this case the router on network B will almost certainly be the default
route for the host, as it's the way to everywhere else.

This isn't really Python-related, so I hope it answers your question!

regards
Steve
--
Steve Holden +44 150 684 7255 +1 800 494 3119
Holden Web LLC/Ltd http://www.holdenweb.com
Skype: holdenweb http://holdenweb.blogspot.com
Recent Ramblings http://del.icio.us/steve.holden


Nice explanation! Thanks! You mean I don't have to do anything special??
That sounds suspiciously easy. :)

To muddy the water a little the equipment I want to get info from (some
seismic digitizing/recording equipment) comes back to us from the field with
the IP addresses set to whatever that last user needed. What we do now is
put the unit(s) on the bench, connect them to the private network and use a
broadcast address (like 255.255.255.255) and a specific port number to query
and see who is connected. Then we (a program) can get in (login, basically)
and reset the all of the IPs to the same subnet to proceed with checkout,
calibration, etc. We have to disconnect from (or disable the card for) the
outside network when we do this discovery or else the program discovers all
of these instruments that we have running in the building (monitoring a
seismic pier, in people's offices, etc.). I'm guessing here we will still
need to do this? It's not a biggie, but finding a way to not have to do
this was what started this whole thing. Once the program knows which
instruments it found on the private network it doesn't matter. It will only
work on those ones.
Ah, so you want to do a limited broadcast over a single interface (the
one for the private network) to avoid having to disable the other
interface? That's a different kettle of fish.

I suspect you could do it by binding the local socket to a single
address, but I'd need to play around to get it right. Maybe someone else
has already done this?

regards
Steve
--
Steve Holden +44 150 684 7255 +1 800 494 3119
Holden Web LLC/Ltd http://www.holdenweb.com
Skype: holdenweb http://holdenweb.blogspot.com
Recent Ramblings http://del.icio.us/steve.holden

Sep 11 '06 #4

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

7 posts views Thread by Chaser | last post: by
1 post views Thread by LkR299 | last post: by
3 posts views Thread by Ophir | last post: by
1 post views Thread by Ray Mitchell | last post: by
8 posts views Thread by Edison Abarca Tapia | last post: by
11 posts views Thread by gustavo.samour | last post: by
1 post views Thread by kavok | last post: by
reply views Thread by Guy007 | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.