Outbound port on sockets

Sergei Organov osv at javad.com
Fri Sep 15 11:34:05 EDT 2006


Grant Edwards <grante at visi.com> writes:

> On 2006-09-15, Diez B. Roggisch <deets at nospam.web.de> wrote:
>
>>>>> Is it possible to specify which port to use as the outbound port on a
>>>>> connection? 
>>> [...]
>>>>> Specifically, I'm trying to write an FTP host, and I'm trying to
>>>>> implement the PORT command. 
>>>>
>>>> AFAIK you neither can't do that nor need it.
>>> 
>>> It's not the issue here, but to specify the outgoing port
>>> call bind(('', portnum)) before connect().
>>
>> I wasn't aware of that. Cool.
>
> It's an interesting thing to know, but I've been doing TCP
> stuff for many years and never run across a situation where
> it's something I needed to do.  If somebody in this thread
> actually does need to do it, I'd be curious bout why...

Well, one of ftpd implementations I have here (C code from RTEMS) does
this:

      /* anchor socket to avoid multi-homing problems */
      data_source = info->ctrl_addr;
      data_source.sin_port = htons(20); /* ftp-data port */
      if(bind(s, (struct sockaddr *)&data_source, sizeof(data_source)) < 0)
        ERROR;
      ...
      if(connect(s,
          (struct sockaddr *)&info->def_addr,
          sizeof(struct sockaddr_in)) < 0
      )
        ERROR;

I've no idea what "multi-homing problems" are, but maybe it gives you
some hint?

-- Sergei.




More information about the Python-list mailing list