views:

50

answers:

1

I'm trying to implement a simple FTP server (a variation of the EFTP protocol) in linux. When a client connects and sends the PASV command, the server should respond with a port number, so the client can connect to that port to transmit the file. How can the server choose a port number? Do I need to iterate through all the ports from 1024 to 65535 until I find a port that the process can bind to?
I know that calling bind() with 0 as the port automatically chooses the port to bind to, but then how can I know which port was chosen?

Many thanks.

+6  A: 

You let the system chose one as you mention with using 0 as the port number and you call getsockname() to retreive its address - which includes the port number.

nos