Python简单套接字-从客户端请求获取URL

时间:2018-11-05 22:45:24

标签: python python-3.x sockets tcp

对于学校作业,我需要填写充当简单代理服务器的示例Python 3应用程序的空白。我只需要使用套接字库。

我的问题在于,我没有被教过如何拉客户的请求的网址,也找不到在线帮助我的信息。到目前为止,这是代码(我包括它们来举例说明我需要编写的Python样式):

from socket import socket, gethostname, AF_INET, SOCK_STREAM
import sys

if len(sys.argv) <= 1:
    print ("Usage : 'python ProxyServer.py server_ip'\nserver_ip : It is the IP Address Of Proxy Server")
    sys.exit(2)

# Create a server socket, bind it to a port and start listening 
tcpSerSock = socket(AF_INET, SOCK_STREAM)
tcpSerSock.bind(('localhost', 8888))
tcpSerSock.listen(5)

while 1: 

    # Start receiving data from the client 
    print ('Ready to serve...' )

    tcpCliSock, addr = tcpSerSock.accept()
    print ('Received a connection from:', addr)

    message = addr

    print (message.value)

    # Extract the filename from the given message     
    filename = message.split()[1].partition("/")[2] 
    print (filename)

当我将页面排入队列时,我导航至“ localhost:8080 / www.google.com /”。

我的问题是,我怎么能在Python中从排队的URL中以字符串形式在“ www.google.com”中读取?

1 个答案:

答案 0 :(得分:0)

这是我找到的答案。

tcpCliSock.recv(4096)

^上面的代码返回一个包含完整请求的字节对象。当转换为字符串并根据空格进行拆分时,请求的“ www.google.com”段位于位置[1]。

在我的头顶上,检索URL看起来像这样:

test = message.split()[1]