我在地址ftp://192.168.1.14/
和端口21
上有一个FTP服务器。我想用Python制作一个程序以连接到它并下载它的文件。这是我的功课,我必须使用TCP
。我的问题陈述是
”“您需要使用基于python的TCP协议来实现简单的FTP操作。 您将必须创建一个FTP服务器和客户端。然后,您将必须创建一个TCP 套接字(SOC_SREAM)并在服务器和客户端之间建立连接 创建(编程)的模块。建立连接后,需要 将文件(存储在服务器目录中的文本文件)传输到客户端目录。”
我能够使用ftplib
来实现,但是现在我想使用简单的套接字tcp来实现。到目前为止,我所做的是
import socket
s = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM)
s.bind(('ftp://192.168.1.14/', 21))
#also tried s.bind((socket.gethostname(), 21))
但是我收到的错误是
Traceback (most recent call last):
File "server.py", line 34, in <module>
s.bind(('ftp://192.168.1.14/', 21))
socket.gaierror: [Errno 11001] getaddrinfo failed
希望您能帮助我。谢谢
使用s.bind((socket.gethostname(),21))
错误消息是
Traceback (most recent call last):
File "server.py", line 34, in <module>
s.bind((socket.gethostname(), 21))
OSError: [WinError 10013] An attempt was made to access a socket in a way forbidden by its access permissions
答案 0 :(得分:0)
我发现了问题所在。由于我想连接到现有的IP地址,因此它的方法是connect
而不是bind
。因此正确的代码将是
import socket
s = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM)
s.connect((socket.gethostname(), 21))
print(s)