【问题标题】:Using GET/ filename.html HTTP ......... python serve client使用 GET/filename.html HTTP ......... python 服务客户端
【发布时间】:2018-04-06 00:47:51
【问题描述】:

希望我能说得清楚一些。我必须在 python 中创建一个服务器和客户端,相互发送 HTTP GET 请求。现在我创建了一个基本的服务器/客户端程序,现在我的目标是向服务器发送 HTTP GET 请求(来自我保存的 html 文件)和服务器以显示内容。 示例服务器将显示类似 日期: 内容长度: 内容类型: 截至目前,当我运行客户端并键入 GET / filename.html HTTP/1.1\n\r 时,服务器不显示。当我在 Linux shell 中键入该确切命令时,它会完美显示。我怎样才能在客户端和服务器中做到这一点。希望这是有道理的。这是我的客户端和服务器。

 #CLIENT
import socket
import sys

host = socket.gethostname()    
port = 12345                   # The same port as used by the server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
print(s.recv(1024))
inpt = input("type")
b = bytes(inpt, 'utf-8') #THIS SENDS BUT SERVER DOESDNT RECIEVE
s.sendall(b)
print("Message Sent")

#SERVERimport socket
import sys
host = ''        # Symbolic name meaning all available interfaces
port = 12345     # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, port))
s.listen(5)
while True:
  c, addr = s.accept()
  print("Connection accepted from " + repr(addr[1]))
  c.send(b"Server Approved")
  print(repr(addr[1]) + ":" + c.recv(1024).decode("UTF-8"))
  c.close()

我想在我的服务器上输入类似的内容并显示其内容
GET / google.com HTTP/1.1\r\n

【问题讨论】:

    标签: python http server get client


    【解决方案1】:

    错误信息非常简单,只需阅读它即可修复不起作用的代码。

    Traceback (most recent call last):
        ...
    print(repr(addr[1]) + ":" + c.recv(1024))
    TypeError: must be str, not bytes   
    

    添加.decode("utf-8"):

    print(repr(addr[1]) + ":" + c.recv(1024).decode("utf-8"))
    

    更清楚的是使用str() 而不是repr()。您可以在此处了解这两者之间的区别:Difference between __str__ and __repr__ in Python

    print(str(addr[1]) + ":" + c.recv(1024).decode("utf-8"))
    

    【讨论】:

    • 即使使用 .decode 估算,我仍然收到 TypeError: unsupported operand type(s) for +: 'int' and 'str'
    • 我的错,addr[1] 是int,所以str()repr() 是必需的。
    • 嗯,两者似乎仍然不起作用。但是感谢您的 .decode 部分,将字节更改为字符串是有意义的
    • 请用您现在遇到的错误或/和问题描述更新问题,以便我提供帮助。
    • 刚刚更新了代码并显示了我要输入并显示的HTTP GET方法
    猜你喜欢
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-21
    • 1970-01-01
    相关资源
    最近更新 更多