我是socket編程新手,我試圖實現一個簡化的FTP程序。 它使用兩個TCP連接,一個用作控制連接,另一個用作數據連接。問題是我不知道如何使用服務器使用端口20連接到客戶端的N + 1端口。請參閱here,以獲得更多資金。使用BSD套接字仿真一個活動的FTP連接
0
A
回答
3
要建立主動模式的數據連接,您可以:
- 查找與
getsockname()
控制連接的本地地址; - 通過將端口號更改爲20來修改此地址;
- 用
socket()
創建另一個套接字; - 將新套接字綁定到使用
bind()
創建的端口20地址; - 用
connect()
將套接字連接到客戶端的地址/端口。
請注意,如果守護程序未作爲root用戶運行,則bind()
可能會失敗,因爲綁定低端口號是特權操作。
0
您應該通過FTP RFC 959獲取所有細節。 客戶端需要共享數據端口到服務器,如果它想要服務器啓動數據連接。
相關問題
- 1. bsd套接字連接超時iPhone
- 2. 使用C中的BSD套接字實現FTP服務器
- 3. BSD套接字不工作
- 4. 被動套接字不接受ftp
- 5. BSD套接字連接+選擇(客戶端)
- 6. Windows Phone 7使用套接字的FTP
- 7. POSIX套接字和BSD套接字有什麼區別?
- 8. RL-ARM庫的BSD套接字API
- 9. 仿真用戶活動
- 10. Windows Phone 8仿真器的Internet連接
- 11. 使用活動連接的批處理文件ftp示例
- 12. 活動中的Android WifiDirect開放式套接字連接
- 13. 定時器檢查套接字連接上的活動?
- 14. 如何使用boost :: asio使套接字連接保持活動狀態?
- 15. 如何啓動並保持跨多個活動的套接字連接?
- 16. BSD套接字和超時iOS中
- 17. BSD/Posix套接字是否可重入?
- 18. BSD套接字問題:inet_ntop返回「0.0.0.0」
- 19. 當使用gremlin連接到Azure cosmossDB仿真器時的超時連接
- 20. 連接到仿真器服務器的多個仿真器客戶端
- 21. PHP套接字 - 如何重新使用套接字連接?
- 22. 返回一個開放的套接字連接/留下一個套接字連接打開C++
- 23. Python套接字 - 連接套接字
- 24. 通過wp7中的套接字進行FTP連接
- 25. WMDC仿真器連接問題
- 26. WTK仿真器藍牙連接
- 27. AVD仿真器已斷開連接
- 28. 如何在所有活動中保持套接字連接
- 29. mysqldump無法使用套接字連接
- 30. 使用unix套接字連接到RabbitMQ