【发布时间】:2011-04-23 15:03:59
【问题描述】:
既然我不调用close(http_socket_fd),为什么我不能在C Web 客户端中重用http 客户端套接字?对套接字文件描述符的第一次写入/读取工作得很好。任何/所有连续读取都返回零(几乎没有任何错误)。
基本上,我不想继续为连续请求重新创建新的客户端连接套接字到同一主机。在 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);
【问题讨论】:
标签: http sockets tcp reusability