首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这些IP地址来自哪里?

这些IP地址来自哪里?
EN

Stack Overflow用户
提问于 2009-06-14 05:59:09
回答 1查看 405关注 0票数 1
代码语言:javascript
复制
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/inet.h>


int main(int argc, char *argv[])
{
    //set up hints

    struct addrinfo hints;
    struct addrinfo *res;

    struct sockaddr their_addr;
    socklen_t sin_size = sizeof their_addr;
    char ipaddr[INET6_ADDRSTRLEN];

    int sockfd, new_fd;

    int sent;


    memset(&hints, 0, sizeof(hints));
    hints.ai_family = AF_UNSPEC;
    hints.ai_socktype = SOCK_STREAM;
    hints.ai_flags = AI_PASSIVE;

    getaddrinfo(NULL, argv[1], &hints, &res);

    sockfd = socket(res->ai_family, res->ai_socktype, res->ai_protocol);

    //bind a port to listen on

    bind(sockfd, res->ai_addr, res->ai_addrlen);
    listen(sockfd, 10);

    new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size);
    inet_ntop(AF_INET, 
                  their_addr.sa_data,
                  ipaddr, sizeof ipaddr);

    printf("Connection recieved from %s", ipaddr);

    sent = send(new_fd, "Hello, world!", 13, 0);
}

这是服务器在我登录时的输出:

代码语言:javascript
复制
tyler@tkahn-server:~$ ./server_setup 1299
Connection recieved from 186.32.0.0
tyler@tkahn-server:~$ ./server_setup 1299
^C
tyler@tkahn-server:~$ ./server_setup 1290
Connection recieved from 231.237.0.0
tyler@tkahn-server:~$ ./server_setup 1290
Connection recieved from 231.241.0.0
tyler@tkahn-server:~$ 

顺便说一下,我是在防火墙下运行的,所以我的服务器地址是192.168.101,本地机器是192.168.1.104。

编辑我怀疑问题区域是函数调用

代码语言:javascript
复制
inet_ntop(AF_INET, 
                      their_addr.sa_data,
                      ipaddr, sizeof ipaddr);

这是将存储的ip地址转换为字符串的地方。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-06-14 06:26:51

inet_ntop需要一个struct in_addr指针作为第二个参数,因此尝试如下所示:

代码语言:javascript
复制
inet_ntop(AF_INET, &((struct sockaddr_in*)&their_addr)->sin_addr,
                                  ipaddr, sizeof ipaddr);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/992277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档