【发布时间】:2015-11-23 03:38:42
【问题描述】:
我正在尝试使用套接字连接到 FTP 服务器。我正在学习网络编程,所以我不想使用 ftplib。我已经搜索了整个stackoverflow,因为有类似的问题,并且我已经尝试了用户必须提供的所有解决方案堆栈,但到目前为止它们都没有奏效。有什么想法吗?
def connect_to_target(username, password):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((target, 21))
data = s.recv(1024).decode()
s.send('USER' + username + '\r\n').encode()
data = s.recv(1024).decode()
s.send('PASS' + password + '\r\n').encode()
data = s.recv(3).decode()
s.send('QUIT\r\n')
s.close()
return data
解释器说问题出在第 13 行,即
s.send('USER' + username + '\r\n').encode().
我尝试了不同的变体,例如:
s.send('USER' + username + '\r\n'.encode())
当我尝试后者时,它给了我:
TypeError: Can't convert 'bytes' object to str implicitly
【问题讨论】:
-
也许是
s.send(('USER' + username + '\r\n').encode())? -
或
s.send('USER{}\r\n'.format(username).encode()) -
@ace 成功了,谢谢!但我很好奇,你知道为什么 s.send(('USER' + username + '\r\n').encode()) 工作而不是 s.send('USER' + username + '\ r\n'.encode())?
-
@ace 等等,是不是 s.send('USER' + username + '\r\n'.encode()) 中的 .encode 只是编码最后一部分 '\r\n ' 而不是整个字符串,这就是括号版本起作用的原因?
标签: python sockets python-3.x