我相信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,但它打印的只是"server: got from ::1“。
我不明白为什么会发生这种情况-基本上我想做的是从url中获取html页面名称,并且我想从返回的字符串中提取它,但是字符串并没有返回我期望的结果。
发布于 2020-10-31 01:11:39
inet_ntop函数采用包含IP地址的结构,并将其转换为字符串格式。它对URL一无所知。
当accept返回时,此时所发生的一切就是建立了一个TCP连接,并且their_addr包含连接的端点的IP地址,在本例中为::1,这是打印出来的地址。
您需要进一步阅读套接字(可能包含HTTP )以了解所调用的URL。
https://stackoverflow.com/questions/64612855
复制相似问题