重用HTTP的客户端TCP连接

时间:2011-04-23 15:03:59

标签: http sockets tcp reusability

为什么我不能在C Web客户端中重用http客户端套接字,因为我不调用close(http_socket_fd)?对套接字文件描述符的第一次写入/读取非常有效。任何/所有连续读取都返回零(几乎没有任何错误)。

基本上,我不想继续为同一主机重新创建新的客户端连接套接字以用于连续请求。在C中是否可以重用开放客户端套接字(已启用HTTP保持活动)以进行连续读/写操作?似乎可以使用Java http://www.mail-archive.com/httpclient-dev@jakarta.apache.org/msg04687.html

Example: (PSEUDO_CODE)
MANY_DOMAINS=30,000;
//initial connection
do{
  http_socket_to_domain_x=open(NEW_TCP_SOCKET_PER_DOMAIN);
  get(initial_url_path);
  read(http_socket_to_domain_x,initial_http_response);
} while(EACH_DOMAIN)
for(LIST_OF_URLS FROM EACH_DOMAIN);
  //successive connections - NO RECREATING TCP SOCKET!
do{
  get(another_url_path);
  read(http_socket_to_domain_x,another_http_response);
} while(EACH_URL_PER_DOMAIN)
//finally
close(http_socket_to_domain_x);

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

服务器可能正在关闭连接。你发送HTTP / 1.1标头?有关详情,请参阅http://www.io.com/~maus/HttpKeepAlive.html