我认为inet_ntop((应该将结构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 %sn", s);
如果我从http://localhost:3490/thispage.html,我希望代码能打印出来http://localhost:3490/thispage.html但它打印出来的只是";服务器:从::1"获得连接;。
我不明白为什么会发生这种情况——基本上我想做的是从url中获取html页面名称,我想从返回的字符串中提取它,但字符串没有返回我所期望的。
inet_ntop
函数采用一个包含IP地址的结构,并将其转换为字符串格式。它对URL一无所知。
当accept
返回时,此时所发生的一切都是建立了TCP连接,而their_addr
包含连接的端点的IP地址,在本例中为:1,这就是打印的内容。
您需要进一步阅读套接字,其中可能包含HTTP,以了解URL的调用。