Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从我刚刚创建的服务器获取文件或响应_Python_Http_Web Applications - Fatal编程技术网

Python 如何从我刚刚创建的服务器获取文件或响应

Python 如何从我刚刚创建的服务器获取文件或响应,python,http,web-applications,Python,Http,Web Applications,我试图通过MichiganX在edX上提供的课程学习Django。我的问题是,课程跳过了一些细节,没有这些细节,我无法让代码正常工作 代码如下所示: from socket import * def createServer(): serversocket = socket(AF_INET, SOCK_STREAM) try: serversocket.bind(('localhost', 9000)) serversocket.listen(5)

我试图通过MichiganX在edX上提供的课程学习Django。我的问题是,课程跳过了一些细节,没有这些细节,我无法让代码正常工作

代码如下所示:

from socket import *
  def createServer():
  serversocket = socket(AF_INET, SOCK_STREAM)
  try:
      serversocket.bind(('localhost', 9000))
      serversocket.listen(5)
      while 1:
          (clientsocket, address) = serversocket.accept()

          rd = clientsocket.recv(5000).decode()
          pieces = rd.split('\n')
          if len(pieces) > 0:
              print(pieces[0])

          data = "HTTP/1.1 200 OK\r\n"
          data += "Content-Type: text/html; charset=UTF-8\r\n"
          data += "\r\n"
          data += "<html><body>Hello World</body></html>\r\n\r\n"
          clientsocket.sendall(data.encode())
          clientsocket.shutdown(SHUT_WR)
  except KeyboardInterrupt:
      print("\nShutting down...\n");
  except Exception as exc:
      print("Error:\n");
      print(exc)
  serversocket.close()


print('Access http://localhost:9000')
createServer()
 import socket

  mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  mysock.connect(('127.0.0.1', 9000))
  cmd = 'GET http://127.0.0.1/romeo.txt HTTP/1.0\r\n\r\n'.encode()
  mysock.send(cmd)

  while True:
      data = mysock.recv(512)
      if len(data) < 1:
          break
      print(data.decode(), end = '')

  mysock.close()
从套接字导入*
def createServer():
serversocket=socket(AF\u INET,SOCK\u STREAM)
尝试:
绑定(('localhost',9000))
serversocket.listen(5)
而1:
(clientsocket,address)=serversocket.accept()
rd=clientsocket.recv(5000).decode()
碎片=rd.split(“\n”)
如果长度(件数)>0:
打印(件[0])
data=“HTTP/1.1 200正常\r\n”
数据+=“内容类型:文本/html;字符集=UTF-8\r\n”
数据+=“\r\n”
data+=“你好,世界\r\n\r\n”
clientsocket.sendall(data.encode())
clientsocket.关机(关机)
除键盘中断外:
打印(“\n按下…\n”);
除作为exc的例外情况外:
打印(“错误:\n”);
打印(exc)
serversocket.close()
打印('访问http://localhost:9000')
createServer()
我们还被告知构建一个简单的web浏览器,将我们连接到我们构建的服务器,它应该返回“Hello World!”,代码如下所示:

from socket import *
  def createServer():
  serversocket = socket(AF_INET, SOCK_STREAM)
  try:
      serversocket.bind(('localhost', 9000))
      serversocket.listen(5)
      while 1:
          (clientsocket, address) = serversocket.accept()

          rd = clientsocket.recv(5000).decode()
          pieces = rd.split('\n')
          if len(pieces) > 0:
              print(pieces[0])

          data = "HTTP/1.1 200 OK\r\n"
          data += "Content-Type: text/html; charset=UTF-8\r\n"
          data += "\r\n"
          data += "<html><body>Hello World</body></html>\r\n\r\n"
          clientsocket.sendall(data.encode())
          clientsocket.shutdown(SHUT_WR)
  except KeyboardInterrupt:
      print("\nShutting down...\n");
  except Exception as exc:
      print("Error:\n");
      print(exc)
  serversocket.close()


print('Access http://localhost:9000')
createServer()
 import socket

  mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  mysock.connect(('127.0.0.1', 9000))
  cmd = 'GET http://127.0.0.1/romeo.txt HTTP/1.0\r\n\r\n'.encode()
  mysock.send(cmd)

  while True:
      data = mysock.recv(512)
      if len(data) < 1:
          break
      print(data.decode(), end = '')

  mysock.close()
导入套接字
mysock=socket.socket(socket.AF\u INET,socket.SOCK\u流)
mysock.connect('127.0.0.1',9000))
cmd='GEThttp://127.0.0.1/romeo.txt HTTP/1.0\r\n\r\n'.encode()
mysock.send(cmd)
尽管如此:
data=mysock.recv(512)
如果len(数据)<1:
打破
打印(data.decode(),end='')
mysock.close()
第一个问题是,课程中没有提到romeo.txt,它只是突然出现。他们告诉我们只运行代码,但它什么也没做。我用谷歌搜索了如何启动服务器,所以在我的命令windom中,我从我的服务器文件所在的目录启动了它,但每当我尝试从代码中连接上述web浏览器时(即使我删除了“romeo.txt”),我都会收到错误404


我知道我遗漏了一些东西,我知道仅仅从我的文件所在的目录启动服务器是不够的,第一课没有解释如何做,但为了在下一课中取得进展,我需要这样做。有人能帮我吗?对不起,如果这个问题很愚蠢,我已经被困了两个小时,我不知道还能做什么。

这两个程序正在创建套接字。
第一个程序充当服务器,第二个程序充当客户端。第一个程序正在等待有人连接到它,如此行所示
serversocket.accept()
,而第二个程序尝试连接到服务器,如此行所示
mysock.connect('127.0.0.1',9000))

您的问题是在运行客户端时没有运行服务器。解决方案是首先启动服务器,保持其运行,然后启动客户端。
它应该是这样工作的,在一个cmd/终端中:
python服务器.py

在其他命令/终端中:
python客户端.py


将server.py和client.py替换为原始文件名。

非常感谢,现在我知道如何运行服务器了,它工作起来很有魅力!