Aaron Brady
3/10/2008 4:58:00 PM
On Mar 10, 9:40 am, Marc Christiansen <use...@solar-empire.de> wrote:
> nata...@gmail.com wrote:
> > I have a linux box with multiple ip addresses. I want to make my
> > python client connect from one of the ip addresses. Here is my code,
> > no matter what valid information I put in the bind it always comes
> > from the default ip address on the server. Am I doing something wrong?
>
> > -------------
> > #!/usr/bin/python
>
> > import socket
>
> > host = "server"
> > port = 1190
>
> > sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
>
> > sock.bind(("<ipalias>",0))
> > sock.connect((host, port))
> > -------------
>
> Looks good to me. Just to verify it, I added 127.1.2.3 as an address to
> lo (ip addr add 127.1.2.3/8 dev lo broadcast 127.255.255.255), and...
>
> >>> import socket
> >>> sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> >>> sock.bind(("127.1.2.3",0))
> >>> sock.connect(("127.0.0.1",80))
>
> In another shell:
> tolot:~> lsof -c python -a -i -nP
> COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
> [...]
> python 1287 tolot 3u IPv4 3553610 TCP 127.1.2.3:38329->127.0.0.1:80 (ESTABLISHED)
help string:
Bind the socket to a local address. For IP sockets, the address is a
pair (host, port); the host must refer to the local host.
docs:
Bind the socket to address.
Wikipedia:
Before a socket may accept incoming connections, it must be bound.
PHP.net:
Binds the name given in address to the socket described by socket .
This has to be done before a connection is be established using
socket_connect() or socket_listen().
This function must be used on the socket before socket_connect().