【发布时间】:2015-04-08 23:08:13
【问题描述】:
从命令行
client.py Aaron 12000 HelloWorld.html GET
client.py
def main(argv):
serverName = argv[0]
serverPort = int(argv[1])
fileName = argv[2]
typeOfHttpRequest = argv[3]
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName, serverPort))
clientSocket.send(typeOfHttpRequest + " " + fileName + " HTTP/1.1\r\n\r\n")
content = clientSocket.recv(1024)
print content
clientSocket.close()
if __name__ == "__main__":
main(sys.argv[1:])
server.py
while True:
#Establish the connection
print 'Ready to serve....'
connectionSocket, addr = serverSocket.accept()
try:
message = connectionSocket.recv(1024)
typeOfRequest = message.split()[0]
filename = message.split()[1]
print typeOfRequest
print filename
f = open(filename[1:])
outputdata = f.read()
if typeOfRequest == 'GET':
for i in range(0, len(outputdata)):
connectionSocket.send(outputdata[i])
connectionSocket.close()
elif typeOfRequest == 'HEAD':
connectionSocket.send(True)
except IOError:
connectionSocket.send('HTTP/1.1 404 Not Found')
connectionSocket.close()
serverSocket.close()
我已将 HelloWorld.html 与 server.py 放在同一目录中,但这总是会产生 IOError。有人知道为什么会这样吗?
文件位于 C:\Networking
os.getcwd显示 C:\NetworkingHelloWorld.html 位于 C:/networking/HelloWorld.html
文件名打印正确。
【问题讨论】:
-
文件名打印正确吗? IE。给
open的文件路径是否正确 -
以后,对于错误消息,请始终包含完整的回溯。
-
你能告诉我们
os.getcwd()是为你的服务器准备的吗? -
你是如何运行服务器的?是
cd directory-for-server && python server.py还是你叫它python /directory-for-server/server.py? -
为什么是
filename[1:]?
标签: python sockets python-2.7 ioerror