首页 > 解决方案 > 如何将 tcp 套接字与 ftp 服务器连接

问题描述

我在地址ftp://192.168.1.14/和端口上有一个 FTP 服务器21。我想用 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

标签: pythonsocketsftp

解决方案


我解决了这个问题。由于我想连接到现有的IP地址,所以它的方法connect不是bind。所以正确的代码是

import socket

s = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM)


s.connect((socket.gethostname(), 21))

print(s)

推荐阅读