2012-03-05 46 views
0

我是socket編程新手,我試圖實現一個簡化的FTP程序。 它使用兩個TCP連接,一個用作控制連接,另一個用作數據連接。問題是我不知道如何使用服務器使用端口20連接到客戶端的N + 1端口。請參閱here,以獲得更多資金。使用BSD套接字仿真一個活動的FTP連接

回答

3

要建立主動模式的數據連接,您可以:

  • 查找與getsockname()控制連接的本地地址;
  • 通過將端口號更改爲20來修改此地址;
  • socket()創建另一個套接字;
  • 將新套接字綁定到使用bind()創建的端口20地址;
  • connect()將套接字連接到客戶端的地址/端口。

請注意,如果守護程序未作爲root用戶運行,則bind()可能會失敗,因爲綁定低端口號是特權操作。

0

您應該通過FTP RFC 959獲取所有細節。 客戶端需要共享數據端口到服務器,如果它想要服務器啓動數據連接。