Heim >Backend-Entwicklung >Golang >Mit Go kann keine Verbindung zum FTP-Server hergestellt werden, aber mit FileZilla ist eine Verbindung möglich
Der PHP-Editor Zimo hat herausgefunden, dass einige Benutzer berichteten, dass sie bei der Verwendung der Go-Sprache zum Herstellen einer Verbindung zum FTP-Server auf Probleme gestoßen seien, sie sich jedoch mit FileZilla normal verbinden konnten. Dieses Problem kann dazu führen, dass einige Entwickler FTP-Vorgänge nicht reibungslos ausführen können. In diesem Artikel untersuchen wir die möglichen Ursachen und Lösungen, um den Lesern bei der Lösung dieses Verbindungsproblems zu helfen, damit sie mithilfe der Go-Sprache erfolgreich eine Verbindung zum FTP-Server herstellen können.
Ich habe ein kleines Golang-Programm und versuche, eine Verbindung zu einem FTP-Server (https://registry.hub.docker.com/r/atmoz/sftp) herzustellen, der in einem Docker-Container läuft.
Mein Gerät ist ein M1 Pro MacBook.
Starten Sie den Container mit dem folgenden Befehl:
docker run -p 22:22 -d atmoz/sftp foo:pass:::upload
go-Version ist 1.17.13.
Der Programmcode lautet wie folgt:
package main import ( "log" "time" "github.com/jlaffaye/ftp" ) func main() { c, err := ftp.dial("localhost:22", ftp.dialwithtimeout(5*time.second)) if err != nil { log.fatal(err, " cannot connect") } err = c.login("foo", "pass") if err != nil { log.fatal(err, "cannot login") } // do something with the ftp conn if err := c.quit(); err != nil { log.fatal(err) } }
Irgendwie kann ich keine Verbindung zum FTP-Server herstellen, der diesen Code ausführt, er erzeugt die folgende Ausgabe:
EOF cannot connect
Ich habe versucht, mit filezilla eine Verbindung zum selben FTP-Server herzustellen, und es hat einwandfrei funktioniert und ich konnte erfolgreich eine Verbindung zum Server herstellen.
Irgendwelche Ideen, wie man das Problem beheben oder das Problem weiter beheben kann? Danke
Port 22 ist normalerweise SSH/SFTP, nicht FTP. Beachten Sie, dass FileZilla sowohl FTP als auch SFTP unterstützt. Es ist also wahrscheinlich, dass Sie tatsächlich FileZilla verwenden, um eine Verbindung mit SFTP herzustellen. Die beiden Protokolle sind völlig unterschiedlich und inkompatibel.
Go scheint ein „sftp“-Paket zu haben:
https://www.php.cn/link/c6344b0ae32e496be8b1b701e540d566
Das obige ist der detaillierte Inhalt vonMit Go kann keine Verbindung zum FTP-Server hergestellt werden, aber mit FileZilla ist eine Verbindung möglich. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!