【发布时间】:2014-09-13 19:00:20
【问题描述】:
我已经用 Python 创建了一个服务器。代码是:
from socket import *
serverSocket = socket(AF_INET, SOCK_STREAM)
localHost = # my address
port = 5369
serverSocket.bind( (localHost, port) )
serverSocket.listen(1)
while True:
print ("Ready to serve.....")
connectionSocket, addr = serverSocket.accept()
try:
message = connectionSocket.recv(1024)
filename = message.split()[1]
f = open(filename[1:])
outputdata = f.read()
for i in range(0, len(outputdata) ):
connectionSocket.send(outputdata[i])
connectionSocket.close()
except IOError:
connectionSocket.send('404 Not Found')
connectionSocket.close()
serverSocket.close()
我执行了文件。它给出了一个错误:
Traceback (most recent call last):
File:"D;\.....\server.py", line 25, in <module>
connectionSocket.send(outputdata[i])
TypeError: 'str' does not support the buffer interface.
通过 Stackoverflow 上的类似查询扫描后,我发现从 Python 3.0 开始,数据需要转换为字节。如果是这种情况,那么我应该在哪里以及如何更改/解析数据?
【问题讨论】:
-
所有其他问题都说明您需要将数据从字符串编码为字节。您是否尝试过应用它?当你这样做时出了什么问题?
-
@MartijnPieters 我不知道该怎么做。这是我第一次使用 Python。
-
见Best way to convert string to bytes in Python 3?,但在这种情况下以二进制模式打开文件更容易。
-
@MartijnPieters 所以,我应该这样做:
outputBin = bytes(outputdata,"utf-8")然后发送 outputBin? -
我已经在下面回答了你应该做什么。
标签: python python-3.x