小编Bil*_*ill的帖子

如何获取已接受的入站套接字的IP地址?

我的问题是:

服务器将创建一个套接字,绑定到给定端口并使用address = INADDR_ANY.

listen()&accept()新连接.然后,我们可以获取客户端的IP地址

来自accept().

现在,我想知道服务器的ip-address,因为服务器的主机有

多个网卡就可以了.

如何知道接受的入站套接字来自的网络接口的IP地址?

我尝试了getsockname,它给了我端口号,但ip是全零.

更新:这是代码:

Server.c(删除头文件)

int main(void)
{

    struct sockaddr_in stSockAddr;
    int res, addr_len, SocketFD, ConnectFD;

    struct sockaddr_in addr;

    SocketFD = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);

    if(-1 == SocketFD)
    {
      perror("can not create socket");
      //exit(EXIT_FAILURE);
      return -1;
    }

    memset(&stSockAddr, 0, sizeof stSockAddr);
    stSockAddr.sin_family = AF_INET;
    stSockAddr.sin_port = htons(49335);
    stSockAddr.sin_addr.s_addr = INADDR_ANY;

    if(-1 == bind(SocketFD,(struct sockaddr *)&stSockAddr, sizeof stSockAddr))
    {
      perror("error bind failed");
      close(SocketFD);
     return -1;
    }


    printf("going to listen!\n"); 
    if(-1 == listen(SocketFD, 10))
    {   
      perror("error …
Run Code Online (Sandbox Code Playgroud)

c sockets

1
推荐指数
2
解决办法
6416
查看次数

标签 统计

c ×1

sockets ×1