如何获得Socket连接客户端的IP地址

2025-03-18 15:26:15
推荐回答(2个)
回答1:

如果服务器端要获取客户端ip的话:


//假设socket(),bind(),listen()函数已经完成
addrlen = sizeof(client);
connetfd = accept(listenfd,(struct sockaddr *)&client,&addrlen);

那么client.sin_port 就是客户端的端口

client.sin_addr.s_addr 就是客户端的ip。

这两个都是以网络字节序来保存的,如果要printf的话需要先转化为主机字节序

回答2:

  如果你测试访问的时候,使用的是 localhost 进行访问的,那么服务器端获得的也就是127.0.0.1,因为localhost是一个环路地址,特殊的.
  如果你是通过你的ip地址进行访问的,那么获得的IP地址就会是正确的了.

  -------
  要通过自己本地的IP进行访问,在控制面板的网络连接里找到本地连接,查看它的属性,并找到"详细信息"按钮,点击后弹出的对话框中IPV4地址就是本地地址.
  或打开命令行,输入 ipconfig /all 即可找到本地地址.
  在浏览器中通过这个IP地址访问,就不会是127.0.0.1了.