【发布时间】:2021-02-13 04:19:28
【问题描述】:
我相信 inet_ntop() 应该将 struct sockaddr 地址转换为字符串,目前我有:
sin_size = sizeof their_addr;
new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size);
inet_ntop(AF_INET6, &(((struct sockaddr_in6 *)&their_addr)->sin6_addr), s, sizeof s);
printf("server: got connection from %s\n", s);
如果我从 http://localhost:3490/thispage.html 建立连接,我希望代码能够打印出来 http://localhost:3490/thispage.html 但它打印出来的只是“服务器:从 ::1 获得连接”。
我不明白为什么会这样——基本上我想做的是从 url 中获取 html 页面名称,我想从返回的字符串中提取它,但字符串没有返回我原来的样子预计。
【问题讨论】:
-
你的期望是错误的。这仅处理 IP 和 IPv6 地址,与 URL 无关。
-
听起来您正在寻找的是 HTTP
Referer:标头。 -
你知道我如何在 c 程序中得到它吗?
-
如果 C 程序作为 Web 服务器,它需要读取 HTTP 标头。
标签: c sockets server network-programming