Python 如何将tcp套接字连接到ftp服务器
我在地址Python 如何将tcp套接字连接到ftp服务器,python,sockets,ftp,Python,Sockets,Ftp,我在地址ftp://192.168.1.14/和端口21。我想用Python编写一个程序来连接它并下载它的文件。这是我的家庭作业,我必须使用TCP。我的问题陈述是 “您需要使用基于python的TCP协议实现一个简单的FTP操作。 你必须创建一个FTP服务器和客户端。然后你必须创建一个TCP 套接字(SOC_SREAM)并在服务器和客户端之间建立连接 您创建(编程)的模块。一旦建立连接,就需要您 将文件(存储在服务器目录中的文本文件)传输到客户端目录。“ 我可以使用ftplib来完成,但现在我想
ftp://192.168.1.14/
和端口21
。我想用Python编写一个程序来连接它并下载它的文件。这是我的家庭作业,我必须使用TCP
。我的问题陈述是
“您需要使用基于python的TCP协议实现一个简单的FTP操作。
你必须创建一个FTP服务器和客户端。然后你必须创建一个TCP
套接字(SOC_SREAM)并在服务器和客户端之间建立连接
您创建(编程)的模块。一旦建立连接,就需要您
将文件(存储在服务器目录中的文本文件)传输到客户端目录。“
我可以使用ftplib
来完成,但现在我想使用简单的套接字tcp来完成。到目前为止,我所做的是
导入套接字
s=socket.socket(family=socket.AF_INET,type=socket.SOCK_STREAM)
s、 绑定('ftp://192.168.1.14/', 21))
#还尝试了s.bind((socket.gethostname(),21))
但我收到的错误是
回溯(最近一次呼叫最后一次):
文件“server.py”,第34行,在
s、 绑定('ftp://192.168.1.14/', 21))
socket.gaierror:[Errno 11001]getaddrinfo失败
希望你能帮助我。谢谢
编辑:
使用s.bind((socket.gethostname(),21))
错误消息是
回溯(最近一次呼叫最后一次):
文件“server.py”,第34行,在
s、 绑定((socket.gethostname(),21))
OSError:[WinError 10013]试图以其访问权限所禁止的方式访问套接字
我解决了这个问题。因为我想连接到现有的IP地址,所以它的方法是connect
而不是bind
。所以正确的代码应该是
导入套接字
s=socket.socket(family=socket.AF_INET,type=socket.SOCK_STREAM)
s、 连接((socket.gethostname(),21))
印刷品
1。给定的地址必须存在于您的计算机上(如果您在不同于目标系统的系统上开发,这可能很重要)。2.端口不得已在使用中,且不得被防火墙阻止。