Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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请求包中启用TCP保持活动?_Python_Sockets_Python Requests - Fatal编程技术网

如何在python请求包中启用TCP保持活动?

如何在python请求包中启用TCP保持活动?,python,sockets,python-requests,Python,Sockets,Python Requests,问题定义: 我试图通过使用python代码启用TCP保持活动状态和HTTP请求 测试: 1.通常,我们使用请求包。我知道HTTP保持活动与TCP保持活动不同。 这是我的请求包示例代码: server_api = 'http://ip address:8000' def send_get_req(api_url): try: s = requests.session() resp_get_req = s.get(api_url, timeout=500)

问题定义:

我试图通过使用python代码启用TCP保持活动状态和HTTP请求

测试:

1.通常,我们使用请求包。我知道HTTP保持活动与TCP保持活动不同。 这是我的请求包示例代码:

server_api = 'http://ip address:8000'

def send_get_req(api_url):
    try:
        s = requests.session()
        resp_get_req = s.get(api_url, timeout=500)
    except Exception as SendGetReqException:
        print("Exception while sending GetRequest", SendGetReqException)
    return resp_get_req

print(datetime.now().__str__() + ' : ' + send_get_req(server_api + '/300-sec-delay').content.__str__())
但是,它不会发送任何TCP ACK包,如下面的跟踪日志:

2.在搜索了一些文档后,我尝试使用socket包。以下是我的示例代码:

import socket

server_api = 'http://ip address:8000/10-sec-delay'
def fetch(url):
  sock = socket.socket()   
  sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
  sock.connect(('ip address', 8000))   
  request = "GET / HTTP/1.1\r\nHost:%s\r\n\r\n" % url
  print(request)
  sock.sendall(request.encode())  
  response = b''
  chunk = sock.recv(4096)   
  while chunk:
      response += chunk
      chunk = sock.recv(4096)
  return response

print(datetime.now().__str__() + ' : ' + fetch(server_api).__str__())
我无法访问http://ip 地址:以上代码延迟8000/10秒。它击中http://ip 地址:每次8000

请求:
我被困在这里了。请您提供一些见解好吗?

为什么?你的HTTP连接真的会连续几个小时处于空闲状态吗?这里有两个问题基本上是独立的:一个是关于如何使用TCP在请求中保持活动状态,另一个是为什么你的套接字代码(没有请求)不能工作。请将这些作为单独的问题保存。对于后者:您将完整的URL放入主机头中,但将路径保留为
/
。HTTP不是这样工作的。这只是处理HTTP的问题之一。对于主机头,您需要输入HTTP/1的域名。1@dedshit谢谢你的评论。但我没有域名,我用ip+端口访问我公开的测试API。@JayGong:更好,但不正确。主机头应该只包含主机名,而不是完整的URL。但同样,请把这个问题分成两部分,这样你问的不同的独立问题就可以分别回答了。