2016-10-03 20 views
0

我正在嘗試爲我的cpp ftp客戶端實現主動模式。使用套接字的C++ FTP PORT命令實現

我試圖實現簡單的LISTEN服務器,netstat -ant表示它正在監聽0.0.0.0:port(例如1025)。

在客戶端當我發送端口0,0,0,0,4,1 \ r \ n服務器回覆代碼500 - 非法端口命令。

我應該多做些什麼才能使它工作?由於

MOREINFO

我的服務器代碼: ..sin_addr.s_addr = INADDR_ANY;我可以將inaddr_any更改爲僅「正在運行」的IP filezilla與192.168.1.13服務器連接 - 當我使用192.168.1.13作爲inet_addr(「192.168.1.13」)它工程但如何設置新的TCP偵聽IP?當我嘗試例如192.168.1時它返回BIND問題。

回答

2

您正在傾聽0.0.0.0,這意味着'任何',但對等體需要一個實際的IP地址,而不是0.0.0.0。你需要發送一個公共IP地址到達你的監聽套接字。

+0

感謝您的回覆。我在我的代碼中有:is.sin_addr.s_addr = INADDR_ANY,當我看到filezilla如何進入活動模式時,總是有「192.168.x.x」。那麼我如何設置監聽公共IP的服務器呢?謝謝 – jausch

+0

您不必更改有關服務器設置的任何信息。 INADDR_ANY對於這部分是完美的。你只需要在PORT消息中告訴對方它可以使用的東西。你不能連接到0.0.0.0,所以它不是有用的,或者是正確的。 – EJP

+0

好的,那麼我怎麼知道什麼IP放到PORT命令?在我的Ubuntu上運行例如192.168.1.13,但它不會在我認爲的每個系統上工作。謝謝 – jausch